XElement.Parse Metod

Definition

Läs in en XElement från en sträng som innehåller XML, om du vill bevara tomt utrymme och behålla radinformation.

Överlagringar

Name Description
Parse(String)

Läs in en XElement från en sträng som innehåller XML.

Parse(String, LoadOptions)

Läs in en XElement från en sträng som innehåller XML, om du vill bevara tomt utrymme och behålla radinformation.

Parse(String)

Källa:
XElement.cs
Källa:
XElement.cs
Källa:
XElement.cs
Källa:
XElement.cs
Källa:
XElement.cs

Läs in en XElement från en sträng som innehåller 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

Parametrar

text
String

En String som innehåller XML.

Returer

En XElement ifylld från strängen som innehåller XML.

Exempel

I följande exempel skapas en sträng som innehåller XML. Sedan parsar den strängen till en XElement.

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

Det här exemplet genererar följande utdata:

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

Kommentarer

Den här metoden bevarar inte tomt utrymme. Om du vill bevara tomt utrymme i XML-trädet använder du överlagringen av metoden Parse som tar LoadOptions som parameter. Mer information finns i Bevara tomt utrymme vid inläsning eller parsning av XML och Bevara tomt utrymme vid serialisering.

LINQ till XML:s inläsningsfunktioner bygger på XmlReader. Därför kan du fånga eventuella undantag som genereras av överlagringsmetoderna XmlReader.Create och de XmlReader metoder som läser och parsar dokumentet.

Se även

Gäller för

Parse(String, LoadOptions)

Källa:
XElement.cs
Källa:
XElement.cs
Källa:
XElement.cs
Källa:
XElement.cs
Källa:
XElement.cs

Läs in en XElement från en sträng som innehåller XML, om du vill bevara tomt utrymme och behålla radinformation.

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

Parametrar

text
String

En String som innehåller XML.

options
LoadOptions

A LoadOptions som anger beteende för tomt utrymme och om bas-URI och radinformation ska läsas in.

Returer

En XElement ifylld från strängen som innehåller XML.

Exempel

I följande exempel parsas en sträng till ett XElement på två olika sätt: bevara tomt utrymme och inte bevara tomt utrymme. Sedan används en fråga för att fastställa antalet blankstegsnoder i det resulterande XML-trädet.

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)

Det här exemplet genererar följande utdata:

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

I följande exempel bevaras radinformation när strängen parsas.

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

Det här exemplet genererar följande utdata:

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

Kommentarer

Om käll-XML:en är indragen gör inställningen PreserveWhitespace av flaggan i options att läsaren läser allt tomt utrymme i käll-XML:en. Noder av typen XText skapas för både betydande och obetydligt tomt utrymme.

Om käll-XML:en är indragen, gör inte inställningen PreserveWhitespace av flaggan i options att läsaren ignorerar allt obetydligt tomt utrymme i käll-XML:en. XML-trädet skapas utan textnoder för obetydligt tomt utrymme.

Om käll-XML inte är indraget har det ingen effekt att ange PreserveWhitespace flaggan i options . Betydande tomt utrymme bevaras fortfarande, och det finns inga intervall med obetydligt tomt utrymme som kan orsaka skapandet av fler blankstegstextnoder.

Mer information finns i Bevara tomt utrymme vid inläsning eller parsning av XML och Bevara tomt utrymme vid serialisering.

Inställningen SetBaseUri har ingen effekt när du parsar från en String.

Kan XmlReader ha en giltig radinformation eller inte. Om du anger SetLineInfoanges radinformationen i XML-trädet från den radinformation som rapporteras av XmlReader.

Det finns ett prestandastraff om du anger SetLineInfo flaggan.

Radinformationen är korrekt omedelbart efter att XML-dokumentet har lästs in. Om du ändrar XML-trädet när du har läst in dokumentet kan radinformationen bli meningslös.

LINQ till XML:s inläsningsfunktioner bygger på XmlReader. Därför kan du fånga eventuella undantag som genereras av överlagringsmetoderna XmlReader.Create och de XmlReader metoder som läser och parsar dokumentet.

Se även

Gäller för