XmlReader.ReadInnerXml 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当在派生类中被重写时,将所有内容(包括标记)当做字符串读取。
public:
virtual System::String ^ ReadInnerXml();
public virtual string ReadInnerXml ();
abstract member ReadInnerXml : unit -> string
override this.ReadInnerXml : unit -> string
Public Overridable Function ReadInnerXml () 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>
注解
此方法返回当前节点的所有内容,包括 标记。 不返回当前节点(开始标记)和对应的结束节点(结束标记)。 例如,如果具有以下项:
<node>
this <child id="123"/>
</node>
ReadInnerXml
返回 this <child id="123"/>
此方法按以下方式处理元素和属性节点:
节点类型 | 调用前的位置 | XML 片断 | 返回值 | 呼叫后的位置 |
---|---|---|---|---|
Element |
在 item1 开始标记上。 |
<item1>text1</item1><item2>text2</item2> | text1 | 在 item2 开始标记上。 |
Attribute |
在 attr1 属性节点上。 |
<item attr1=“val1” attr2=“val2”>text</item> | val1 | 保留在 attr1 属性节点上。 |
如果读取器定位在叶节点上,则调用 ReadInnerXml
等效于调用 Read。 方法返回 String.Empty
(属性节点除外,在这种情况下,属性的值) 返回。
此方法检查格式正确的 XML。 如果 ReadInnerXml
从 XmlValidatingReader调用 ,则此方法还会验证返回的内容。
如 在 XmlNodeReader和 XmlTextReaderXmlValidatingReader
类中实现的, ReadOuterXml
方法可识别命名空间。
有关此方法的异步版本,请参阅 ReadInnerXmlAsync。