Udostępnij za pośrednictwem


XElement.Parse Metoda

Definicja

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

text
String

Element String zawierający kod XML.

Zwraca

XElement

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

text
String

Element String zawierający kod XML.

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

XElement

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.

Zobacz też

Dotyczy