XElement.Parse Metoda

Definicja

Załaduj XElement z ciągu, który zawiera kod XML, opcjonalnie zachowując odstęp i przechowując informacje o wierszu.Load an XElement from a string that contains XML, optionally preserving white space and retaining line information.

Przeciążenia

Parse(String)

Załaduj XElement z ciągu, który zawiera kod XML.Load an XElement from a string that contains XML.

Parse(String, LoadOptions)

Załaduj XElement z ciągu, który zawiera kod XML, opcjonalnie zachowując odstęp i przechowując informacje o wierszu.Load an XElement from a string that contains XML, optionally preserving white space and retaining line information.

Parse(String)

Załaduj XElement z ciągu, który zawiera kod XML.Load an XElement from a string that contains 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

A String , który zawiera kod XML.A String that contains XML.

Zwraca

XElement Wypełnione z ciągu, który zawiera kod XML.An XElement populated from the string that contains XML.

Przykłady

Poniższy przykład tworzy ciąg, który zawiera kod XML.The following example creates a string that contains XML. Następnie analizuje ciąg w XElement.It then parses the string into an 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:This example produces the following output:

<Root>  
  <Child></Child>  
</Root>  

Uwagi

Ta metoda nie zachowuje białych znaków.This method does not preserve white space. Aby zachować białe miejsce w drzewie XML, należy użyć przeciążenia Parse metody, która przyjmuje LoadOptions jako parametr.If you want to preserve white space in the XML tree, use the overload of the Parse method that takes LoadOptions as a parameter. Aby uzyskać więcej informacji, zobacz zachowywanie białych znaków podczas ładowania lub analizowania kodu XML oraz zachowywania białych znaków podczas serializacji.For more information, see Preserving White Space while Loading or Parsing XML and Preserving White Space While Serializing.

Funkcja ładowania LINQ to XML została utworzona na podstawie XmlReader.LINQ to XML's loading functionality is built upon XmlReader. W związku z tym można wychwycić wszystkie wyjątki, które są XmlReader.Create zgłaszane przez metody przeciążenia XmlReader i metody, które odczytują i analizują dokument.Therefore, you might catch any exceptions that are thrown by the XmlReader.Create overload methods and the XmlReader methods that read and parse the document.

Zobacz też

Parse(String, LoadOptions)

Załaduj XElement z ciągu, który zawiera kod XML, opcjonalnie zachowując odstęp i przechowując informacje o wierszu.Load an XElement from a string that contains XML, optionally preserving white space and retaining line information.

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

A String , który zawiera kod XML.A String that contains XML.

options
LoadOptions

A LoadOptions , który określa zachowanie białych znaków, oraz określa, czy mają zostać załadowane podstawowe identyfikatory URI i informacje o wierszach.A LoadOptions that specifies white space behavior, and whether to load base URI and line information.

Zwraca

XElement Wypełnione z ciągu, który zawiera kod XML.An XElement populated from the string that contains XML.

Przykłady

Poniższy przykład analizuje ciąg na XElement dwa różne sposoby: zachowywanie białych znaków i nie zachowuje białych znaków.The following example parses a string into an XElement in two different ways: preserving white space, and not preserving white space. Następnie używa zapytania, aby określić liczbę białych węzłów w utworzonym drzewie XML.It then uses a query to determine the number of white space nodes in the resulting XML tree.

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:This example produces the following output:

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.The following example retains line information as it parses the string.

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:This example produces the following output:

Element Name        Line Position  
------------        ---- --------  
Root                1    2  
  Child             2    6  
    GrandChild      3    10  

Uwagi

Jeśli źródło XML ma wcięcie, ustawienie PreserveWhitespace flagi w options powoduje, że czytnik odczytuje wszystkie białe znaki w źródłowym kodzie XML.If the source XML is indented, setting the PreserveWhitespace flag in options causes the reader to read all white space in the source XML. Węzły typu XText są tworzone zarówno dla znaczących, jak i nieznaczących białych znaków.Nodes of type XText are created for both significant and insignificant white space.

Jeśli źródło XML ma wcięcie, a nie ustawienie PreserveWhitespace flagi w options powoduje, że czytnik zignoruje wszystkie nieznaczące białe znaki w źródłowym kodzie XML.If the source XML is indented, not setting the PreserveWhitespace flag in options causes the reader to ignore all of the insignificant white space in the source XML. Drzewo XML jest tworzone bez węzłów tekstowych dla nieznaczącego odstępu.The XML tree is created without any text nodes for insignificant white space.

Jeśli źródłowy kod XML nie jest wcięty, ustawienie PreserveWhitespace flagi w options nie ma żadnego efektu.If the source XML is not indented, setting the PreserveWhitespace flag in options has no effect. Wciąż jest zachowywany znaczący biały znak i nie ma żadnych nieznaczących białych znaków, które mogłyby spowodować utworzenie większej ilości białych węzłów tekstowych.Significant white space is still preserved, and there are no spans of insignificant white space that could cause the creation of more white space text nodes.

Aby uzyskać więcej informacji, zobacz zachowywanie białych znaków podczas ładowania lub analizowania kodu XML oraz zachowywania białych znaków podczas serializacji.For more information, see Preserving White Space while Loading or Parsing XML and Preserving White Space While Serializing.

Ustawienie SetBaseUri nie będzie miało wpływu podczas analizowania Stringz.Setting SetBaseUri will have no effect when parsing from a String.

XmlReader Może mieć prawidłowe informacje o wierszu.The XmlReader may have a valid line information or not. Jeśli ustawisz SetLineInfo, informacje o wierszu zostaną ustawione w drzewie XML na podstawie informacji o wierszu, które są zgłaszane XmlReaderprzez.If you set SetLineInfo, the line information will be set in the XML tree from the line information that is reported by the XmlReader.

Jeśli ustawisz flagę, SetLineInfo występuje spadek wydajności.There is a performance penalty if you set the SetLineInfo flag.

Informacje o wierszu są dokładne natychmiast po załadowaniu dokumentu XML.The line information is accurate immediately after loading the XML document. Jeśli zmodyfikujesz drzewo XML po załadowaniu dokumentu, informacje o wierszach mogą stać się bezużyteczne.If you modify the XML tree after loading the document, the line information may become meaningless.

Funkcja ładowania LINQ to XML została utworzona na podstawie XmlReader.LINQ to XML's loading functionality is built upon XmlReader. W związku z tym można wychwycić wszystkie wyjątki, które są XmlReader.Create zgłaszane przez metody przeciążenia XmlReader i metody, które odczytują i analizują dokument.Therefore, you might catch any exceptions that are thrown by the XmlReader.Create overload methods and the XmlReader methods that read and parse the document.

Zobacz też

Dotyczy