XElement.Parse Methode

Definition

Laden Sie eine XElement Zeichenfolge aus einer Zeichenfolge, die XML enthält, optional Leerraum beibehalten und Zeileninformationen beibehalten.

Überlädt

Name Beschreibung
Parse(String)

Laden sie aus XElement einer Zeichenfolge, die XML enthält.

Parse(String, LoadOptions)

Laden Sie eine XElement Zeichenfolge aus einer Zeichenfolge, die XML enthält, optional Leerraum beibehalten und Zeileninformationen beibehalten.

Parse(String)

Laden sie aus XElement einer Zeichenfolge, die XML enthält.

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

Parameter

text
String

A String that contains XML.

Gibt zurück

Eine XElement aufgefüllte Zeichenfolge, die XML enthält.

Beispiele

Im folgenden Beispiel wird eine Zeichenfolge erstellt, die XML enthält. Anschließend analysiert sie die Zeichenfolge in eine XElement.

XElement xmlTree = XElement.Parse("<Root> <Child> </Child> </Root>");
Console.WriteLine(xmlTree);
Dim xmlTree As XElement = <Root><Child></Child></Root>
Console.WriteLine(xmlTree)

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Hinweise

Diese Methode behält keinen Leerraum bei. Wenn Sie Leerraum in der XML-Struktur beibehalten möchten, verwenden Sie die Überladung der Methode, die Parse als Parameter verwendet LoadOptions wird. Weitere Informationen finden Sie unter Beibehalten des Leerraums beim Laden oder Analysieren von XML und Beibehalten von Leerzeichen beim Serialisieren.

LINQ to XML-Ladefunktionalität basiert auf XmlReader. Daher können Sie ausnahmen erfassen, die von den XmlReader.Create Überladungsmethoden und den XmlReader Methoden ausgelöst werden, die das Dokument lesen und analysieren.

Weitere Informationen

Gilt für:

Parse(String, LoadOptions)

Laden Sie eine XElement Zeichenfolge aus einer Zeichenfolge, die XML enthält, optional Leerraum beibehalten und Zeileninformationen beibehalten.

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

Parameter

text
String

A String that contains XML.

options
LoadOptions

Ein LoadOptions Wert, der das Leerzeichenverhalten angibt und ob Basis-URI und Zeileninformationen geladen werden sollen.

Gibt zurück

Eine XElement aufgefüllte Zeichenfolge, die XML enthält.

Beispiele

Im folgenden Beispiel wird eine Zeichenfolge auf XElement zwei verschiedene Arten analysiert: Die Beibehaltung von Leerzeichen und nicht das Beibehalten von Leerzeichen. Anschließend wird eine Abfrage verwendet, um die Anzahl der Leerraumknoten in der resultierenden XML-Struktur zu bestimmen.

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)

Dieses Beispiel erzeugt die folgende Ausgabe:

Count of white space nodes (not preserving whitespace): 0
Count of white space nodes (preserving whitespace): 3

Im folgenden Beispiel werden Zeileninformationen beibehalten, während sie die Zeichenfolge analysiert.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Hinweise

Wenn der Quell-XML-Code eingerückt ist, bewirkt das Festlegen des PreserveWhitespace Flags options , dass der Leser den gesamten Leerraum im Quell-XML-Code liest. Knoten des Typs XText werden sowohl für signifikante als auch für unbedeutende Leerräume erstellt.

Wenn der Quell-XML-Code eingerückt ist, wird das PreserveWhitespace Flag options nicht festgelegt, wodurch der Leser den gesamten unbedeutenden Leerraum im Quell-XML-Code ignoriert. Die XML-Struktur wird ohne Textknoten für unbedeuteten Leerraum erstellt.

Wenn der Quell-XML-Code nicht eingerückt ist, hat das Festlegen des PreserveWhitespace Flags options keine Auswirkung. Erheblicher Leerraum bleibt erhalten, und es gibt keine Spanne von unbedeutenden Leerzeichen, die die Erstellung von mehr Leerraum-Textknoten verursachen könnten.

Weitere Informationen finden Sie unter Beibehalten des Leerraums beim Laden oder Analysieren von XML und Beibehalten von Leerzeichen beim Serialisieren.

Die Einstellung SetBaseUri hat keine Auswirkung beim Analysieren von einer String.

Möglicherweise XmlReader verfügen sie über gültige Zeileninformationen oder nicht. Wenn Sie festlegen SetLineInfo, werden die Zeileninformationen in der XML-Struktur aus den Zeileninformationen festgelegt, die von der XmlReader.

Es gibt eine Leistungseinbuße, wenn Sie die SetLineInfo Kennzeichnung festlegen.

Die Zeileninformationen sind unmittelbar nach dem Laden des XML-Dokuments genau. Wenn Sie die XML-Struktur nach dem Laden des Dokuments ändern, können die Zeileninformationen bedeutungslos werden.

LINQ to XML-Ladefunktionalität basiert auf XmlReader. Daher können Sie ausnahmen erfassen, die von den XmlReader.Create Überladungsmethoden und den XmlReader Methoden ausgelöst werden, die das Dokument lesen und analysieren.

Weitere Informationen

Gilt für: