XElement.Load 方法

定义

从 URI 所指定的文件、XElementTextReader 创建新 XmlReader

重载

Load(TextReader, LoadOptions)

XElement 加载 TextReader,还可以选择保留空白和行信息。

Load(XmlReader, LoadOptions)

XElement 加载 XmlReader 时,可以选择保留空白、设置基 URI 和保留行信息。

Load(String, LoadOptions)

从文件加载 XElement,还可以选择保留空白、设置基 URI 和保留行信息。

Load(Stream, LoadOptions)

使用指定流创建新的 XElement 实例,也可以选择保留空白,设置基 URI 和保留行信息。

Load(TextReader)

XElement 加载 TextReader

Load(String)

从文件加载 XElement

Load(Stream)

使用指定的流创建一个新的 XElement 实例。

Load(XmlReader)

XElement 加载 XmlReader

注解

可以使用此方法的重载之一从文件、文件TextReader或文件XmlReader加载XElement

若要从包含 XML 的字符串创建一个 XElement ,请使用 Parse

Load(TextReader, LoadOptions)

XElement 加载 TextReader,还可以选择保留空白和行信息。

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

参数

textReader
TextReader

一个从其读取 TextReader 内容的 XElement

options
LoadOptions

一个 LoadOptions,指定空白行为以及是否加载基 URI 和行信息。

返回

XElement

一个 XElement,其中包含从指定的 TextReader 读取的 XML。

示例

以下示例以两种不同的方式加载一个XElementStringReader:保留空格,而不保留空格。 然后,它使用查询来确定生成的 XML 树中的空白节点数。

TextReader sr;  
int whiteSpaceNodes;  

sr = new StringReader("<Root> <Child> </Child> </Root>");  
XElement xmlTree1 = XElement.Load(sr, LoadOptions.None);  
sr.Close();  
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);  

sr = new StringReader("<Root> <Child> </Child> </Root>");  
XElement xmlTree2 = XElement.Load(sr, LoadOptions.PreserveWhitespace);  
sr.Close();  
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 sr As TextReader  
Dim whiteSpaceNodes As Integer  

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

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

以下示例从中加载行信息时加载行 TextReader信息。 然后,它会打印行信息。

TextReader sr = new StringReader(  
@"<Root>  
  <Child>  
    <GrandChild1/>  
    <GrandChild2/>  
  </Child>  
</Root>");  
XElement po = XElement.Load(sr,  
    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 po.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 sr As TextReader = New StringReader( _  
    "<Root>" & Environment.NewLine & _  
    "  <Child>" & Environment.NewLine & _  
    "    <GrandChild1/>" & Environment.NewLine & _  
    "    <GrandChild2/>" & Environment.NewLine & _  
    "  </Child>" & Environment.NewLine & _  
    "</Root>")  
Dim po As XElement = XElement.Load(sr, 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 po.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    4  
    GrandChild1     3    6  
    GrandChild2     4    6  

注解

如果源 XML 缩进,则 PreserveWhitespace 设置标志 options 会导致读取器读取源 XML 中的所有空白。 为重要且微不足道的空白创建类型 XText 节点。

如果源 XML 缩进,则不设置 PreserveWhitespace 标志 options 会导致读取器忽略源 XML 中所有无关紧要的空白。 创建 XML 树时没有任何文本节点用于无关紧要的空白。

如果源 XML 未缩进,则 PreserveWhitespace 设置 options 标志不起作用。 仍然保留大量空白,并且没有无关紧要的空白空间,这可能会导致创建更多的空白文本节点。

有关详细信息,请参阅 在加载或分析 XML 时保留空白, 并在 序列化时保留空白

用于 Parse 从包含 XML 的字符串创建一个 XElement

从中TextReader加载时,设置SetBaseUri将不起作用。

如果设置 SetLineInfo 标志,性能会降低。

加载 XML 文档后,行信息会立即准确。 如果在加载文档后修改 XML 树,则行信息可能毫无意义。

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

另请参阅

适用于

Load(XmlReader, LoadOptions)

XElement 加载 XmlReader 时,可以选择保留空白、设置基 URI 和保留行信息。

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

参数

reader
XmlReader

一个从其读取 XmlReader 内容的 XElement

options
LoadOptions

一个 LoadOptions,指定空白行为以及是否加载基 URI 和行信息。

返回

XElement

一个 XElement,其中包含从指定的 XmlReader 读取的 XML。

示例

下面的示例加载它从中加载的 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();  

    XElement xRoot = XElement.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.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 XElement = XElement.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.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  

注解

通过从 DOM 文档创建 XmlNodeReader ,然后使用 XmlNodeReader 创建 XElement方法,此方法可用于在 LINQ to XML 树中创建 DOM 文档的副本。

用于 Parse 从包含 XML 的字符串创建一个 XElement

从中XmlReader加载时设置PreserveWhitespace无效。 该 XmlReader 设置将配置为读取空格或未读取空格。 LINQ to XML 树将填充读取器表面的空白节点。 无论是否 PreserveWhitespace 设置,这都是行为。

XmlReader可能具有有效的基本 URI。 如果设置 SetBaseUri,基础 URI 将从报告 XmlReader的基础 URI 中的 XML 树中设置。

可能 XmlReader 具有有效的行信息。 如果设置 SetLineInfo,则行信息将从所报告的行信息中设置在 XML 树中 XmlReader

如果设置 SetLineInfo 标志,性能会降低。

加载 XML 文档后,行信息会立即准确。 如果在加载文档后修改 XML 树,则行信息可能毫无意义。

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

另请参阅

适用于

Load(String, LoadOptions)

从文件加载 XElement,还可以选择保留空白、设置基 URI 和保留行信息。

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

参数

uri
String

一个 URI 字符串,它引用要加载到 XElement 中的文件。

options
LoadOptions

一个 LoadOptions,指定空白行为以及是否加载基 URI 和行信息。

返回

XElement

一个包含指定文件的内容的 XElement

示例

以下示例以两种不同的方式从文件加载一个 XElement :保留空格,而不保留空白。 然后,它使用查询来确定生成的 XML 树中的空白节点数。

XElement xmlTree1 = XElement.Parse("<Root> <Child>  </Child> </Root>", LoadOptions.PreserveWhitespace);  
xmlTree1.Save("Tree.xml");  
Console.WriteLine(xmlTree1);  

int whiteSpaceNodes;  
XElement xmlTree2 = XElement.Load("Tree.xml",  
    LoadOptions.None);  
whiteSpaceNodes = xmlTree2  
    .DescendantNodesAndSelf()  
    .OfType<XText>()  
    .Where(tNode => tNode.ToString().Trim().Length == 0)  
    .Count();  
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}", whiteSpaceNodes);  

XElement xmlTree3 = XElement.Load("Tree.xml",  
    LoadOptions.PreserveWhitespace);  
whiteSpaceNodes = xmlTree3  
    .DescendantNodesAndSelf()  
    .OfType<XText>()  
    .Where(tNode => tNode.ToString().Trim().Length == 0)  
    .Count();  
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}", whiteSpaceNodes);  
Dim xmlTree1 As XElement = XElement.Parse("<Root> <Child>  </Child> </Root>", LoadOptions.PreserveWhitespace)  
xmlTree1.Save("Tree.xml")  
Console.WriteLine(xmlTree1)  

Dim whiteSpaceNodes As Integer  
Dim xmlTree2 As XElement = XElement.Load("Tree.xml", LoadOptions.None)  
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 (not preserving whitespace): {0}", whiteSpaceNodes)  

Dim xmlTree3 As XElement = XElement.Load("Tree.xml", LoadOptions.PreserveWhitespace)  
whiteSpaceNodes = xmlTree3 _  
                  .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)  

该示例产生下面的输出:

<Root> <Child>  </Child> </Root>  
Count of white space nodes (not preserving whitespace): 0  
Count of white space nodes (preserving whitespace): 3  

以下示例加载文件时加载基本 URI 和行信息。 然后,它会打印基本 URI 和行信息。

此示例使用以下资源文件 :示例 XML 文件:典型采购订单 (LINQ to XML)

XElement po = XElement.Load("PurchaseOrder.xml",  
    LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);  
string[] splitUri = po.BaseUri.Split('/');  
Console.WriteLine("BaseUri: {0}", splitUri[splitUri.Length - 1]);  
Console.WriteLine();  
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 po.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 po As XElement = XElement.Load("PurchaseOrder.xml", LoadOptions.SetBaseUri Or LoadOptions.SetLineInfo)  
Dim splitUri() As String = po.BaseUri.Split("/")  
Console.WriteLine("BaseUri: {0}", splitUri(splitUri.Length - 1))  
Console.WriteLine()  
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 po.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  

该示例产生下面的输出:

BaseUri: PurchaseOrder.xml  

Element Name        Line Position  
------------        ---- --------  
PurchaseOrder       2    2  
  Address           3    4  
    Name            4    6  
    Street          5    6  
    City            6    6  
    State           7    6  
    Zip             8    6  
    Country         9    6  
  Address           11   4  
    Name            12   6  
    Street          13   6  
    City            14   6  
    State           15   6  
    Zip             16   6  
    Country         17   6  
  DeliveryNotes     19   4  
  Items             20   4  
    Item            21   6  
      ProductName   22   8  
      Quantity      23   8  
      USPrice       24   8  
      Comment       25   8  
    Item            27   6  
      ProductName   28   8  
      Quantity      29   8  
      USPrice       30   8  
      ShipDate      31   8  

注解

如果源 XML 缩进,则 PreserveWhitespace 设置标志 options 会导致读取器读取源 XML 中的所有空白。 为重要且微不足道的空白创建类型 XText 节点。

如果源 XML 缩进,则不设置 PreserveWhitespace 标志 options 会导致读取器忽略源 XML 中所有无关紧要的空白。 创建 XML 树时没有任何文本节点用于无关紧要的空白。

如果源 XML 未缩进,则 PreserveWhitespace 设置 options 标志不起作用。 仍然保留大量空白,并且没有无关紧要的空白空间,这可能会导致创建更多的空白文本节点。

有关详细信息,请参阅 在加载或分析 XML 时保留空白, 并在 序列化时保留空白

用于 Parse 从包含 XML 的字符串创建一个 XElement

如果设置 SetBaseUri 标志和 SetLineInfo 标志,则会出现性能损失。

加载 XML 文档后,基 URI 和行信息会立即准确。 如果在加载文档后修改 XML 树,则基本 URI 和行信息可能毫无意义。

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

另请参阅

适用于

Load(Stream, LoadOptions)

使用指定流创建新的 XElement 实例,也可以选择保留空白,设置基 URI 和保留行信息。

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

参数

stream
Stream

包含 XML 数据的流。

options
LoadOptions

一个 LoadOptions 对象,指定是否加载基 URI 和行信息。

返回

XElement

一个用于读取流中所包含数据的 XElement 对象。

注解

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

若要修改 XmlReaderSettings,请执行以下步骤:

  1. XmlReader通过调用作为参数的Create重载XmlReaderSettings之一来创建。

  2. XmlReader用作参数的XElementLoad重载XmlReader之一传递。

适用于

Load(TextReader)

XElement 加载 TextReader

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

参数

textReader
TextReader

一个从其读取 TextReader 内容的 XElement

返回

XElement

一个 XElement,其中包含从指定的 TextReader 读取的 XML。

示例

The following example loads an element from a StringReader.

TextReader sr = new StringReader("<Root><Child/></Root>");  
XElement xmlTree = XElement.Load(sr);  
sr.Close();  
Console.WriteLine(xmlTree);  
Dim sr As TextReader = New StringReader("<Root><Child/></Root>")  
Dim xmlTree As XElement = XElement.Load(sr)  
sr.Close()  
Console.WriteLine(xmlTree)  

该示例产生下面的输出:

<Root>  
  <Child />  
</Root>  

注解

此方法将原始 XML 读入 XML 树。 它丢弃文件中所有无关紧要的空白空间。

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

另请参阅

适用于

Load(String)

从文件加载 XElement

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

参数

uri
String

一个 URI 字符串,用来引用要加载到新 XElement 中的文件。

返回

XElement

一个包含指定文件的内容的 XElement

示例

以下示例创建 XML 树,将其保存到文件,然后使用此方法从文件加载 XElement

XElement xmlTree1 = new XElement("Root",  
    new XElement("Child", "content")  
);  
xmlTree1.Save("Tree.xml");  

XElement xmlTree2 = XElement.Load("Tree.xml");  
Console.WriteLine(xmlTree2.Name);  
Dim xmlTree1 As XElement = _   
        <Root>  
            <Child>Content</Child>  
        </Root>  
xmlTree1.Save("Tree.xml")  

Dim xmlTree2 As XElement = XElement.Load("Tree.xml")  
Console.WriteLine(xmlTree2.Name)  

该示例产生下面的输出:

Root  

注解

此方法将原始 XML 读入 XML 树。 它丢弃文件中所有无关紧要的空白空间。

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

另请参阅

适用于

Load(Stream)

使用指定的流创建一个新的 XElement 实例。

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

参数

stream
Stream

包含 XML 数据的流。

返回

XElement

一个用于读取流中所包含数据的 XElement 对象。

注解

如果要控制加载选项,请使用 Load 采用参数的重载 LoadOptions

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

若要修改 XmlReaderSettings,请执行以下步骤:

  1. XmlReader通过调用作为参数的Create重载XmlReaderSettings之一来创建。

  2. XmlReader用作参数的XElementLoad重载XmlReader之一传递。

适用于

Load(XmlReader)

XElement 加载 XmlReader

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

参数

reader
XmlReader

一个从其读取 XmlReader 内容的 XElement

返回

XElement

一个 XElement,其中包含从指定的 XmlReader 读取的 XML。

示例

以下示例创建 DOM 文档,从 DOM 文档创建一个 XmlNodeReader ,从读取器实例化树。 此代码有效地将 DOM 文档复制到 LINQ to XML 树中。

// 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();  

    XElement xRoot = XElement.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 XElement = XElement.Load(nodeReader)  
    Console.WriteLine(xRoot)  
End Using  

该示例产生下面的输出:

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

注解

通过从 DOM 文档创建 XmlNodeReader ,然后使用 XmlNodeReader 创建 XElement方法,此方法可用于在 LINQ to XML 树中创建 DOM 文档的副本。

LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。

另请参阅

适用于