XElement.Parse Метод

Определение

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

Перегрузки

Имя Описание
Parse(String)

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

Parse(String, LoadOptions)

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

Parse(String)

Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs

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 из строки, содержащей 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.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs
Исходный код:
XElement.cs

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 из строки, содержащей 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-код не отступен, установка флага PreserveWhitespaceoptions не действует. Значительные пробелы по-прежнему сохраняются, и нет диапазонов незначительных пробелов, которые могут привести к созданию дополнительных узлов текста пробелов.

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

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

У него XmlReader могут быть допустимые сведения о строке или нет. Если заданоSetLineInfo, данные строки будут заданы в xml-дереве из сведений о строке, сообщаемых данными.XmlReader

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

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

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

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

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