XElement.Load 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从 URI 所指定的文件、XElement 或 TextReader 创建新 XmlReader。
重载
Load(TextReader, LoadOptions) |
从 XElement 加载 TextReader,还可以选择保留空白和行信息。 |
Load(XmlReader, LoadOptions) | |
Load(String, LoadOptions) |
从文件加载 XElement,还可以选择保留空白、设置基 URI 和保留行信息。 |
Load(Stream, LoadOptions) |
使用指定流创建新的 XElement 实例,也可以选择保留空白,设置基 URI 和保留行信息。 |
Load(TextReader) |
从 XElement 加载 TextReader。 |
Load(String) |
从文件加载 XElement。 |
Load(Stream) |
使用指定的流创建一个新的 XElement 实例。 |
Load(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,其中包含从指定的 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)
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
参数
- options
- LoadOptions
一个 LoadOptions,指定空白行为以及是否加载基 URI 和行信息。
返回
一个 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
参数
- options
- LoadOptions
一个 LoadOptions,指定空白行为以及是否加载基 URI 和行信息。
返回
一个包含指定文件的内容的 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 对象。
注解
LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。
若要修改 XmlReaderSettings,请执行以下步骤:
适用于
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,其中包含从指定的 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
参数
返回
一个包含指定文件的内容的 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 对象。
注解
如果要控制加载选项,请使用 Load 采用参数的重载 LoadOptions 。
LINQ to XML 的加载功能基于 XmlReader. 因此,你可能会捕获重载方法引发 XmlReader.Create 的任何异常以及 XmlReader 读取和分析文档的方法。
若要修改 XmlReaderSettings,请执行以下步骤:
适用于
Load(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
参数
返回
一个 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 读取和分析文档的方法。