XmlReader.ReadOuterXml 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当在派生类中被重写时,读取表示该节点和所有它的子级的内容(包括标记)。
public:
virtual System::String ^ ReadOuterXml();
public virtual string ReadOuterXml ();
abstract member ReadOuterXml : unit -> string
override this.ReadOuterXml : unit -> string
Public Overridable Function ReadOuterXml () As String
返回
如果读取器定位在元素或属性节点上,此方法将返回当前节点及其所有子级的所有 XML 内容(包括标记);否则返回空字符串。
例外
XML 的格式不良,或分析 XML 时出错。
在上一次异步操作完成之前调用了 XmlReader 方法。 在此情况下,会引发 InvalidOperationException 并显示消息“异步操作已在进行中。”
示例
以下示例比较 ReadInnerXml
和 ReadOuterXml
方法。
// Load the file and ignore all white space.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create("2books.xml")) {
// Moves the reader to the root element.
reader.MoveToContent();
// Moves to book node.
reader.Read();
// Note that ReadInnerXml only returns the markup of the node's children
// so the book's attributes are not returned.
Console.WriteLine("Read the first book using ReadInnerXml...");
Console.WriteLine(reader.ReadInnerXml());
// ReadOuterXml returns the markup for the current node and its children
// so the book's attributes are also returned.
Console.WriteLine("Read the second book using ReadOuterXml...");
Console.WriteLine(reader.ReadOuterXml());
}
' Load the file and ignore all white space.
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
Using reader As XmlReader = XmlReader.Create("2books.xml")
' Moves the reader to the root element.
reader.MoveToContent()
' Moves to book node.
reader.Read()
' Note that ReadInnerXml only returns the markup of the node's children
' so the book's attributes are not returned.
Console.WriteLine("Read the first book using ReadInnerXml...")
Console.WriteLine(reader.ReadInnerXml())
' ReadOuterXml returns the markup for the current node and its children
' so the book's attributes are also returned.
Console.WriteLine("Read the second book using ReadOuterXml...")
Console.WriteLine(reader.ReadOuterXml())
End Using
该示例使用 2books.xml
文件作为输入。
<!--sample XML fragment-->
<bookstore>
<book genre='novel' ISBN='10-861003-324'>
<title>The Handmaid's Tale</title>
<price>19.95</price>
</book>
<book genre='novel' ISBN='1-861001-57-5'>
<title>Pride And Prejudice</title>
<price>24.95</price>
</book>
</bookstore>
注解
此方法类似于 , ReadInnerXml 但它还返回开始和结束标记。
此方法按以下方式处理元素和属性节点:
节点类型 | 调用前的位置 | XML 片断 | 返回值 | 调用后的位置 |
---|---|---|---|---|
Element |
在 item1 开始标记上。 |
<item1>text1</item1><item2>text2</item2> | <item1>text1</item1> | 在 item2 开始标记上。 |
Attribute |
在 attr1 属性节点上。 |
<item attr1=“val1” attr2=“val2”>text</item> | attr1=“val1” | 保留在 attr1 属性节点上。 |
如果读取器定位在叶节点上,则调用 ReadOuterXml
等效于调用 Read。 方法返回 String.Empty
除属性节点以外的 (,在这种情况下,属性标记) 返回。
此方法检查格式正确的 XML。 如果 ReadOuterXml
从 XmlValidatingReader调用 ,则此方法还会验证返回的内容
如 在 中XmlNodeReader实现的 和 XmlValidatingReader
XmlTextReader 类一样, ReadOuterXml
方法可识别命名空间。 给定以下 XML 文本 <A xmlns:S="urn:1"><S:B>hello</S:B></A>
,如果读取器位于开始标记上 S:B
, ReadOuterXml
则 <S:B xmlns:S="urn:1">hello<S:B/>
返回 。
有关此方法的异步版本,请参阅 ReadOuterXmlAsync。