XElement.Parse Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Załaduj element XElement z ciągu zawierającego kod XML, opcjonalnie zachowując biały znak i zachowując informacje o wierszu.
Przeciążenia
| Nazwa | Opis |
|---|---|
| Parse(String) |
Załaduj element XElement z ciągu zawierającego kod XML. |
| Parse(String, LoadOptions) |
Załaduj element XElement z ciągu zawierającego kod XML, opcjonalnie zachowując biały znak i zachowując informacje o wierszu. |
Parse(String)
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
Załaduj element XElement z ciągu zawierającego kod XML.
public:
static System::Xml::Linq::XElement ^ Parse(System::String ^ text);
public static System.Xml.Linq.XElement Parse(string text);
static member Parse : string -> System.Xml.Linq.XElement
Public Shared Function Parse (text As String) As XElement
Parametry
Zwraca
Wypełniony XElement ciągiem zawierającym kod XML.
Przykłady
Poniższy przykład tworzy ciąg zawierający kod XML. Następnie analizuje ciąg w obiekcie XElement.
XElement xmlTree = XElement.Parse("<Root> <Child> </Child> </Root>");
Console.WriteLine(xmlTree);
Dim xmlTree As XElement = <Root><Child></Child></Root>
Console.WriteLine(xmlTree)
Ten przykład generuje następujące wyniki:
<Root>
<Child></Child>
</Root>
Uwagi
Ta metoda nie zachowuje białych znaków. Jeśli chcesz zachować białe znaki w drzewie XML, użyj przeciążenia Parse metody, która przyjmuje LoadOptions jako parametr. Aby uzyskać więcej informacji, zobacz Zachowywanie odstępu podczas ładowania lub analizowania kodu XML i Zachowywanie odstępu podczas serializacji.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Zobacz też
Dotyczy
Parse(String, LoadOptions)
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
- Źródło:
- XElement.cs
Załaduj element XElement z ciągu zawierającego kod XML, opcjonalnie zachowując biały znak i zachowując informacje o wierszu.
public:
static System::Xml::Linq::XElement ^ Parse(System::String ^ text, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XElement Parse(string text, System.Xml.Linq.LoadOptions options);
static member Parse : string * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XElement
Public Shared Function Parse (text As String, options As LoadOptions) As XElement
Parametry
- options
- LoadOptions
Element LoadOptions określający zachowanie białych znaków oraz to, czy mają być ładowane podstawowe informacje o identyfikatorze URI i wierszu.
Zwraca
Wypełniony XElement ciągiem zawierającym kod XML.
Przykłady
Poniższy przykład analizuje ciąg na XElement dwa różne sposoby: zachowywanie białych znaków i brak zachowania odstępu. Następnie używa zapytania, aby określić liczbę węzłów białych znaków w wynikowym drzewie XML.
int whiteSpaceNodes;
XElement xmlTree1 = XElement.Parse("<Root> <Child> </Child> </Root>",
LoadOptions.None);
whiteSpaceNodes = xmlTree1
.DescendantNodesAndSelf()
.OfType<XText>()
.Where(tNode => tNode.ToString().Trim().Length == 0)
.Count();
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}",
whiteSpaceNodes);
XElement xmlTree2 = XElement.Parse("<Root> <Child> </Child> </Root>",
LoadOptions.PreserveWhitespace);
whiteSpaceNodes = xmlTree2
.DescendantNodesAndSelf()
.OfType<XText>()
.Where(tNode => tNode.ToString().Trim().Length == 0)
.Count();
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}",
whiteSpaceNodes);
Dim whiteSpaceNodes As Integer
Dim xmlTree1 As XElement = XElement.Parse("<Root> <Child> </Child> </Root>", LoadOptions.None)
whiteSpaceNodes = xmlTree1 _
.DescendantNodesAndSelf() _
.OfType(Of XText)() _
.Where(Function(ByVal tNode As XNode) tNode.ToString().Trim().Length = 0) _
.Count()
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}", whiteSpaceNodes)
Dim xmlTree2 As XElement = XElement.Parse("<Root> <Child> </Child> </Root>", LoadOptions.PreserveWhitespace)
whiteSpaceNodes = xmlTree2 _
.DescendantNodesAndSelf() _
.OfType(Of XText)() _
.Where(Function(ByVal tNode As XNode) tNode.ToString().Trim().Length = 0) _
.Count()
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}", whiteSpaceNodes)
Ten przykład generuje następujące wyniki:
Count of white space nodes (not preserving whitespace): 0
Count of white space nodes (preserving whitespace): 3
Poniższy przykład zachowuje informacje o wierszu podczas analizowania ciągu.
string markup =
@"<Root>
<Child>
<GrandChild/>
</Child>
</Root>";
XElement xRoot = XElement.Parse(markup, LoadOptions.SetLineInfo);
Console.WriteLine("{0}{1}{2}",
"Element Name".PadRight(20),
"Line".PadRight(5),
"Position");
Console.WriteLine("{0}{1}{2}",
"------------".PadRight(20),
"----".PadRight(5),
"--------");
foreach (XElement e in xRoot.DescendantsAndSelf())
Console.WriteLine("{0}{1}{2}",
("".PadRight(e.Ancestors().Count() * 2) + e.Name).PadRight(20),
((IXmlLineInfo)e).LineNumber.ToString().PadRight(5),
((IXmlLineInfo)e).LinePosition);
Dim markup As String = _
"<Root>" & Environment.NewLine & _
" <Child>" & Environment.NewLine & _
" <GrandChild/>" & Environment.NewLine & _
" </Child>" & Environment.NewLine & _
"</Root>"
Dim xRoot As XElement = XElement.Parse(markup, LoadOptions.SetLineInfo)
Console.WriteLine("{0}{1}{2}", _
"Element Name".PadRight(20), _
"Line".PadRight(5), _
"Position")
Console.WriteLine("{0}{1}{2}", _
"------------".PadRight(20), _
"----".PadRight(5), _
"--------")
For Each e As XElement In xRoot.DescendantsAndSelf()
Console.WriteLine("{0}{1}{2}", _
("".PadRight(e.Ancestors().Count() * 2) & e.Name.ToString).PadRight(20), _
DirectCast(e, IXmlLineInfo).LineNumber.ToString().PadRight(5), _
DirectCast(e, IXmlLineInfo).LinePosition)
Next
Ten przykład generuje następujące wyniki:
Element Name Line Position
------------ ---- --------
Root 1 2
Child 2 6
GrandChild 3 10
Uwagi
Jeśli źródłowy kod XML jest wcięcie, ustawienie PreserveWhitespace flagi w options programie powoduje, że czytelnik odczytuje wszystkie białe znaki w źródłowym kodzie XML. Węzły typu XText są tworzone zarówno dla znaczących, jak i nieistotnych białych znaków.
Jeśli źródłowy kod XML jest wcięcie, nie ustawiając PreserveWhitespace flagi w pliku , options czytnik ignoruje wszystkie nieistotne białe znaki w źródłowym formacie XML. Drzewo XML jest tworzone bez żadnych węzłów tekstowych dla nieistotnego odstępu.
Jeśli źródłowy kod XML nie jest wcięcie, ustawienie flagi w PreserveWhitespace elemecie options nie ma żadnego efektu. Znaczne odstępy są nadal zachowywane i nie ma nieistotnych odstępów, które mogłyby spowodować utworzenie większej liczby białych węzłów tekstowych.
Aby uzyskać więcej informacji, zobacz Zachowywanie odstępu podczas ładowania lub analizowania kodu XML i Zachowywanie odstępu podczas serializacji.
Ustawienie SetBaseUri nie będzie miało wpływu podczas analizowania z elementu String.
Element XmlReader może zawierać prawidłowe informacje o wierszu. Jeśli ustawisz SetLineInfowartość , informacje o wierszu zostaną ustawione w drzewie XML z informacji o wierszu zgłaszanych przez element XmlReader.
W przypadku ustawienia flagi SetLineInfo występuje kara za wydajność.
Informacje o wierszu są dokładne natychmiast po załadowaniu dokumentu XML. Jeśli po załadowaniu dokumentu zmodyfikujesz drzewo XML, informacje o wierszu mogą stać się bezużyteczne.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.