XElement.Parse Metoda

Definicja

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

text
String

Obiekt String , który zawiera kod XML.

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

text
String

Obiekt String , który zawiera kod XML.

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.

Zobacz też

Dotyczy