Поделиться через


XDocument.Load Метод

Определение

Создает новый XDocument из файла, указанного URI, из TextReaderили из XmlReader.

Перегрузки

Load(Stream)

Создает новый экземпляр XDocument с помощью указанного потока.

Load(TextReader)

Создает новый XDocument из TextReader.

Load(String)

Создает новый XDocument из файла.

Load(XmlReader)

Создает новый XDocument из XmlReader.

Load(Stream, LoadOptions)

Создает новый экземпляр XDocument с помощью указанного потока, при необходимости сохраняя пробелы, устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

Load(TextReader, LoadOptions)

Создает новый XDocument из TextReader, при необходимости сохраняя пробелы, устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

Load(String, LoadOptions)

Создает новую XDocument из файла, при необходимости сохраняя пробелы, устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

Load(XmlReader, LoadOptions)

Загружает XDocument из XmlReader, при необходимости устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

Комментарии

С помощью одной из перегрузок этого метода можно загрузить XDocument из файла, TextReaderили XmlReader.

Чтобы создать XDocument из строки, содержащей XML, используйте Parse.

Load(Stream)

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

Создает новый экземпляр XDocument с помощью указанного потока.

public:
 static System::Xml::Linq::XDocument ^ Load(System::IO::Stream ^ stream);
public static System.Xml.Linq.XDocument Load (System.IO.Stream stream);
static member Load : System.IO.Stream -> System.Xml.Linq.XDocument
Public Shared Function Load (stream As Stream) As XDocument

Параметры

stream
Stream

Поток, содержащий XML-данные.

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

Объект XDocument, который считывает данные, содержащиеся в потоке.

Комментарии

Если вы хотите управлять параметрами загрузки, используйте перегрузку Load, которая принимает LoadOptions в качестве параметра.

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

Если необходимо изменить XmlReaderSettings, выполните следующие действия.

  1. Создайте XmlReader путем вызова одной из перегруженных Create, которые принимают XmlReaderSettings в качестве параметра.

  2. Передайте XmlReader в одну из Load перегрузки XDocument, которая принимает XmlReader в качестве параметра.

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

Load(TextReader)

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

Создает новый XDocument из TextReader.

public:
 static System::Xml::Linq::XDocument ^ Load(System::IO::TextReader ^ textReader);
public static System.Xml.Linq.XDocument Load (System.IO.TextReader textReader);
static member Load : System.IO.TextReader -> System.Xml.Linq.XDocument
Public Shared Function Load (textReader As TextReader) As XDocument

Параметры

textReader
TextReader

TextReader, содержащий содержимое для XDocument.

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

XDocument, содержащий содержимое указанного TextReader.

Примеры

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

TextReader tr = new StringReader("<Root>Content</Root>");
XDocument doc = XDocument.Load(tr);
Console.WriteLine(doc);
Dim tr As TextReader = New StringReader("<Root>Content</Root>")
Dim doc As XDocument = XDocument.Load(tr)
Console.WriteLine(doc)

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

<Root>Content</Root>

Комментарии

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

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

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

Load(String)

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

Создает новый XDocument из файла.

public:
 static System::Xml::Linq::XDocument ^ Load(System::String ^ uri);
public static System.Xml.Linq.XDocument Load (string uri);
static member Load : string -> System.Xml.Linq.XDocument
Public Shared Function Load (uri As String) As XDocument

Параметры

uri
String

Строка URI, ссылающаяся на файл для загрузки в новую XDocument.

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

XDocument, содержащий содержимое указанного файла.

Примеры

В следующем примере показано, как загрузить XDocument из файла.

В этом примере используется следующий XML-документ:

пример XML-файла: типичный заказ на покупку (LINQ to XML)

XDocument doc = XDocument.Load("PurchaseOrder.xml");
Console.WriteLine(doc);
Dim doc As XDocument = XDocument.Load("PurchaseOrder.xml")
Console.WriteLine(doc)

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

<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
  <Address Type="Shipping">
    <Name>Ellen Adams</Name>
    <Street>123 Maple Street</Street>
    <City>Mill Valley</City>
    <State>CA</State>
    <Zip>10999</Zip>
    <Country>USA</Country>
  </Address>
  <Address Type="Billing">
    <Name>Tai Yee</Name>
    <Street>8 Oak Avenue</Street>
    <City>Old Town</City>
    <State>PA</State>
    <Zip>95819</Zip>
    <Country>USA</Country>
  </Address>
  <DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes>
  <Items>
    <Item PartNumber="872-AA">
      <ProductName>Lawnmower</ProductName>
      <Quantity>1</Quantity>
      <USPrice>148.95</USPrice>
      <Comment>Confirm this is electric</Comment>
    </Item>
    <Item PartNumber="926-AA">
      <ProductName>Baby Monitor</ProductName>
      <Quantity>2</Quantity>
      <USPrice>39.98</USPrice>
      <ShipDate>1999-05-21</ShipDate>
    </Item>
  </Items>
</PurchaseOrder>

Комментарии

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

Используйте Parse для создания XDocument из строки, содержащей XML.

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

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

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

Load(XmlReader)

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

Создает новый XDocument из XmlReader.

public:
 static System::Xml::Linq::XDocument ^ Load(System::Xml::XmlReader ^ reader);
public static System.Xml.Linq.XDocument Load (System.Xml.XmlReader reader);
static member Load : System.Xml.XmlReader -> System.Xml.Linq.XDocument
Public Shared Function Load (reader As XmlReader) As XDocument

Параметры

reader
XmlReader

XmlReader, содержащий содержимое для XDocument.

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

XDocument, содержащий содержимое указанного XmlReader.

Примеры

В следующем примере создается документ DOM, создается XmlNodeReader из документа DOM, создается XDocument с помощью XmlNodeReader.

// Create a DOM document with some content.
XmlDocument doc = new XmlDocument();
XmlElement child = doc.CreateElement("Child");
child.InnerText = "child contents";
XmlElement root = doc.CreateElement("Root");
root.AppendChild(child);
doc.AppendChild(root);

// create a reader and move to the content
using (XmlNodeReader nodeReader = new XmlNodeReader(doc)) {
    // the reader must be in the Interactive state in order to
    // create a LINQ to XML tree from it.
    nodeReader.MoveToContent();

    XDocument xRoot = XDocument.Load(nodeReader);
    Console.WriteLine(xRoot);
}
' Create a DOM document with some content.
Dim doc As XmlDocument = New XmlDocument()
Dim child As XmlElement = doc.CreateElement("Child")
child.InnerText = "child contents"
Dim root As XmlElement = doc.CreateElement("Root")
root.AppendChild(child)
doc.AppendChild(root)

' create a reader and move to the content
Using nodeReader = New XmlNodeReader(doc)
    ' the reader must be in the Interactive state in order to
    ' create a LINQ to XML tree from it.
    nodeReader.MoveToContent()

    Dim xRoot As XDocument = XDocument.Load(nodeReader)
    Console.WriteLine(xRoot)
End Using

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

<Root>
  <Child>child contents</Child>
</Root>

Комментарии

Одним из возможных способов является создание копии документа DOM в дереве LINQ to XML. Для этого необходимо создать XmlNodeReader из документа DOM, а затем использовать XmlNodeReader для создания XDocument.

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

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

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

Load(Stream, LoadOptions)

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

Создает новый экземпляр XDocument с помощью указанного потока, при необходимости сохраняя пробелы, устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

public:
 static System::Xml::Linq::XDocument ^ Load(System::IO::Stream ^ stream, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load (System.IO.Stream stream, System.Xml.Linq.LoadOptions options);
static member Load : System.IO.Stream * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (stream As Stream, options As LoadOptions) As XDocument

Параметры

stream
Stream

Поток, содержащий XML-данные.

options
LoadOptions

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

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

Объект XDocument, который считывает данные, содержащиеся в потоке.

Комментарии

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

Если необходимо изменить XmlReaderSettings, выполните следующие действия.

  1. Создайте XmlReader путем вызова одной из Create перегрузки, которая принимает XmlReaderSettings в качестве параметра.

  2. Передайте XmlReader в одну из Load перегрузки XDocument, которая принимает XmlReader в качестве параметра.

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

Load(TextReader, LoadOptions)

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

Создает новый XDocument из TextReader, при необходимости сохраняя пробелы, устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

public:
 static System::Xml::Linq::XDocument ^ Load(System::IO::TextReader ^ textReader, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load (System.IO.TextReader textReader, System.Xml.Linq.LoadOptions options);
static member Load : System.IO.TextReader * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (textReader As TextReader, options As LoadOptions) As XDocument

Параметры

textReader
TextReader

TextReader, содержащий содержимое для XDocument.

options
LoadOptions

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

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

XDocument, содержащий XML-код, считывающийся из указанного TextReader.

Примеры

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

TextReader sr;
int whiteSpaceNodes;

sr = new StringReader("<Root> <Child> </Child> </Root>");
XDocument xmlTree1 = XDocument.Load(sr, LoadOptions.None);
sr.Close();
whiteSpaceNodes = xmlTree1
    .Element("Root")
    .DescendantNodesAndSelf()
    .OfType<XText>()
    .Where(tNode => tNode.ToString().Trim().Length == 0)
    .Count();
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}", whiteSpaceNodes);

sr = new StringReader("<Root> <Child> </Child> </Root>");
XDocument xmlTree2 = XDocument.Load(sr, LoadOptions.PreserveWhitespace);
sr.Close();
whiteSpaceNodes = xmlTree2
    .Element("Root")
    .DescendantNodesAndSelf()
    .OfType<XText>()
    .Where(tNode => tNode.ToString().Trim().Length == 0)
    .Count();
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}", whiteSpaceNodes);
Dim sr As TextReader
Dim whiteSpaceNodes As Integer

sr = New StringReader("<Root> <Child> </Child> </Root>")
Dim xmlTree1 As XDocument = XDocument.Load(sr, LoadOptions.None)
sr.Close()
whiteSpaceNodes = xmlTree1 _
              .Element("Root") _
              .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)

sr = New StringReader("<Root> <Child> </Child> </Root>")
Dim xmlTree2 As XDocument = XDocument.Load(sr, LoadOptions.PreserveWhitespace)
sr.Close()
whiteSpaceNodes = xmlTree2 _
              .Element("Root") _
              .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

Комментарии

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

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

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

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

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

Параметр SetBaseUri недопустим при загрузке из TextReader.

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

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

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

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

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

Load(String, LoadOptions)

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

Создает новую XDocument из файла, при необходимости сохраняя пробелы, устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

public:
 static System::Xml::Linq::XDocument ^ Load(System::String ^ uri, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load (string uri, System.Xml.Linq.LoadOptions options);
static member Load : string * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (uri As String, options As LoadOptions) As XDocument

Параметры

uri
String

Строка URI, ссылающаяся на файл для загрузки в новую XDocument.

options
LoadOptions

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

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

XDocument, содержащий содержимое указанного файла.

Примеры

В следующем примере показано, как загрузить XDocument из файла.

В этом примере используется следующий XML-документ:

пример XML-файла: типичный заказ на покупку (LINQ to XML)

XDocument doc1 = XDocument.Load("PurchaseOrder.xml", LoadOptions.None);
Console.WriteLine("nodes if not preserving whitespace: {0}", doc1.DescendantNodes().Count());

XDocument doc2 = XDocument.Load("PurchaseOrder.xml", LoadOptions.PreserveWhitespace);
Console.WriteLine("nodes if preserving whitespace: {0}", doc2.DescendantNodes().Count());
Dim doc1 As XDocument = XDocument.Load("PurchaseOrder.xml", LoadOptions.None)
Console.WriteLine("nodes if not preserving whitespace: {0}", doc1.DescendantNodes().Count())

Dim doc2 As XDocument = XDocument.Load("PurchaseOrder.xml", LoadOptions.PreserveWhitespace)
Console.WriteLine("nodes if preserving whitespace: {0}", doc2.DescendantNodes().Count())

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

nodes if not preserving whitespace: 48
nodes if preserving whitespace: 82

Комментарии

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

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

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

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

Используйте Parse для создания XDocument из строки, содержащей XML.

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

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

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

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

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

Load(XmlReader, LoadOptions)

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

Загружает XDocument из XmlReader, при необходимости устанавливая базовый универсальный код ресурса (URI) и сохраняя сведения о строке.

public:
 static System::Xml::Linq::XDocument ^ Load(System::Xml::XmlReader ^ reader, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load (System.Xml.XmlReader reader, System.Xml.Linq.LoadOptions options);
static member Load : System.Xml.XmlReader * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (reader As XmlReader, options As LoadOptions) As XDocument

Параметры

reader
XmlReader

XmlReader, который будет прочитан для содержимого XDocument.

options
LoadOptions

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

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

XDocument, содержащий XML-код, считывающийся из указанного XmlReader.

Примеры

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

string markup =
@"<Root>
    <Child>
        <GrandChild/>
    </Child>
</Root>";

// Create a reader and move to the content.
using (XmlReader nodeReader = XmlReader.Create(new StringReader(markup)))
{
    // the reader must be in the Interactive state in order to
    // Create a LINQ to XML tree from it.
    nodeReader.MoveToContent();

    XDocument xRoot = XDocument.Load(nodeReader, 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.Elements("Root").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>"

' Create a reader and move to the content.
Using nodeReader As XmlReader = XmlReader.Create(New StringReader(markup))

    ' The reader must be in the Interactive state in order to
    ' create a LINQ to XML tree from it.
    nodeReader.MoveToContent()

    Dim xRoot As XDocument = XDocument.Load(nodeReader, 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.Elements("Root").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
End Using

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

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

Комментарии

Создав XmlNodeReader из документа DOM, а затем используя XmlNodeReader для создания XElement, этот метод можно использовать для создания копии документа DOM в дереве LINQ to XML.

Используйте Parse для создания XDocument из строки, содержащей XML.

Параметр PreserveWhitespace недопустим при загрузке из XmlReader. XmlReader будет настроено для чтения пробелов или нет. Дерево LINQ to XML будет заполнено узлами пробелов, которые будут отображаться в области чтения. Это будет поведение независимо от того, задано ли PreserveWhitespace.

У XmlReader может быть допустимый базовый универсальный код ресурса (URI). Если задать SetBaseUri, базовый универсальный код ресурса (URI) будет задан в xml-дереве из базового URI, сообщаемого XmlReader.

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

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

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

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

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

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