Бөлісу құралы:


XElement.Parse Метод

Определение

Загрузка элемента XElement из строки, содержащей XML, при необходимости с сохранением пробелов и сведений о строке.

Перегрузки

Parse(String)

Загрузка XElement из строки, содержащей XML.

Parse(String, LoadOptions)

Загрузка элемента XElement из строки, содержащей XML, при необходимости с сохранением пробелов и сведений о строке.

Parse(String)

Загрузка XElement из строки, содержащей 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

Параметры

text
String

String, содержащая XML.

Возвращаемое значение

XElement

XElement заполнен из строки, содержащей XML.

Примеры

В следующем примере создается строка, содержащая XML. Затем он анализирует строку в .XElement

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

В этом примере выводятся следующие данные:

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

Комментарии

Этот метод не сохраняет пробелы. Если вы хотите сохранить пробелы в xml-дереве, используйте перегрузку Parse метода, который принимает LoadOptions в качестве параметра. Дополнительные сведения см. в разделе "Сохранение пробела" при загрузке или анализе XML и сохранении пробелов при сериализации.

функция загрузки LINQ to XML основана на XmlReader. Таким образом, вы можете перехватывать все исключения, создаваемые XmlReader.Create методами перегрузки и XmlReader методами, которые считывают и анализируют документ.

См. также раздел

Применяется к

Parse(String, LoadOptions)

Загрузка элемента XElement из строки, содержащей XML, при необходимости с сохранением пробелов и сведений о строке.

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

Параметры

text
String

String, содержащая XML.

options
LoadOptions

LoadOptions, указывающий поведение пустого пространства и необходимость загрузки базового URI и сведений о строке.

Возвращаемое значение

XElement

XElement заполнен из строки, содержащей XML.

Примеры

В следующем примере строка XElement анализируется двумя разными способами: сохранение пробелов и сохранение пробелов. Затем он использует запрос для определения количества узлов пробелов в результирующем 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)  

В этом примере выводятся следующие данные:

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

В следующем примере сохраняются сведения о строке при анализе строки.

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  

В этом примере выводятся следующие данные:

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

Комментарии

Если исходный XML-код отступен, установка флага PreserveWhitespace options приводит к тому, что средство чтения считывает все пробелы в исходном XML- коде. Узлы типа XText создаются как для значительного, так и для незначительного пробела.

Если исходный XML-код отступен, не устанавливая PreserveWhitespace флаг, options модуль чтения игнорирует все незначительные пробелы в исходном XML- коде. XML-дерево создается без текстовых узлов для незначительного пробела.

Если исходный XML-код не отступен, установка флага PreserveWhitespace options не действует. Значительные пробелы по-прежнему сохраняются, и нет диапазонов незначительных пробелов, которые могут привести к созданию дополнительных текстовых узлов пробелов.

Дополнительные сведения см. в разделе "Сохранение пробела" при загрузке или анализе XML и сохранении пробелов при сериализации.

Параметр SetBaseUri не будет иметь эффекта при синтаксическом анализе Stringиз .

Возможно XmlReader , у нее есть допустимые сведения о строке. Если задано SetLineInfo, сведения о строке будут заданы в XML-дереве из сведений о строке, сообщаемой этим XmlReaderэлементом.

При установке флага SetLineInfo существует штраф производительности.

Сведения о строке точны сразу после загрузки XML-документа. При изменении XML-дерева после загрузки документа сведения о строке могут стать бессмысленными.

функция загрузки LINQ to XML основана на XmlReader. Таким образом, вы можете перехватывать все исключения, создаваемые XmlReader.Create методами перегрузки и XmlReader методами, которые считывают и анализируют документ.

См. также раздел

Применяется к