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
Параметры
Возвращаемое значение
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
Параметры
- 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-код не отступен, установка флага PreserveWhitespace options
не действует. Значительные пробелы по-прежнему сохраняются, и нет диапазонов незначительных пробелов, которые могут привести к созданию дополнительных текстовых узлов пробелов.
Дополнительные сведения см. в разделе "Сохранение пробела" при загрузке или анализе XML и сохранении пробелов при сериализации.
Параметр SetBaseUri не будет иметь эффекта при синтаксическом анализе Stringиз .
Возможно XmlReader , у нее есть допустимые сведения о строке. Если задано SetLineInfo, сведения о строке будут заданы в XML-дереве из сведений о строке, сообщаемой этим XmlReaderэлементом.
При установке флага SetLineInfo существует штраф производительности.
Сведения о строке точны сразу после загрузки XML-документа. При изменении XML-дерева после загрузки документа сведения о строке могут стать бессмысленными.
функция загрузки LINQ to XML основана на XmlReader. Таким образом, вы можете перехватывать все исключения, создаваемые XmlReader.Create методами перегрузки и XmlReader методами, которые считывают и анализируют документ.