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 odstęp i zachowując informacje o wierszu.
Przeciążenia
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 odstęp i zachowując informacje o wierszu. |
Parse(String)
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 do elementu 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 odstępu. Jeśli chcesz zachować białe odstępy w drzewie XML, użyj przeciążenia Parse metody, która przyjmuje LoadOptions jako parametr. Aby uzyskać więcej informacji, zobacz Zachowywanie białych znaków 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 przechwycić 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)
Załaduj element XElement z ciągu zawierającego kod XML, opcjonalnie zachowując biały odstęp 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 należy załadować podstawowy identyfikator URI i informacje o 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: zachowanie białych znaków i brak zachowania odstępu. Następnie używa zapytania do określenia liczby węzłów odstępó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ęta PreserveWhitespace , ustawienie flagi powoduje options
, że czytnik odczytuje wszystkie białe znaki w źródłowym formacie 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ęty, nie ustawia flagi PreserveWhitespace w options
elemecie powoduje, że 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ęty, ustawienie flagi PreserveWhitespace w options
elemecie nie ma wpływu. Znaczne odstępy są nadal zachowywane i nie ma żadnych zakresów nieistotnych białych znaków, które mogłyby spowodować utworzenie większej liczby węzłów tekstowych odstępów.
Aby uzyskać więcej informacji, zobacz Zachowywanie białych znaków 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 lub nie. Jeśli ustawisz SetLineInfowartość , informacje o wierszu zostaną ustawione w drzewie XML z informacji o wierszu zgłaszanych przez XmlReaderelement .
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ę bez znaczenia.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwycić wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.