XmlReader.ReadInnerXml XmlReader.ReadInnerXml XmlReader.ReadInnerXml XmlReader.ReadInnerXml Method

定义

当在派生类中被重写时,将所有内容(包括标记)当做字符串读取。When overridden in a derived class, reads all the content, including markup, as a string.

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 内容(包括标记)。All the XML content, including markup, in the current node. 如果当前节点没有任何子级,则返回空字符串。If the current node has no children, an empty string is returned.

如果当前节点既非元素,也非属性,则返回空字符串。If the current node is neither an element nor attribute, an empty string is returned.

异常

XML 的格式不良,或分析 XML 时出错。The XML was not well-formed, or an error occurred while parsing the XML.

在上一次异步操作完成之前调用了 XmlReader 方法。An XmlReader method was called before a previous asynchronous operation finished. 在此情况下,会引发 InvalidOperationException 并显示消息“异步操作已在进行中。”In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

示例

下面的示例对ReadInnerXmlReadOuterXml方法进行比较。The following example compares the ReadInnerXml and ReadOuterXml methods.

// 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文件作为输入。The example uses 2books.xml file as input.

<!--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>

注解

此方法返回当前节点的所有内容,包括标记。This method returns all the content of the current node including the markup. 不返回当前节点(开始标记)和对应的结束节点(结束标记)。The current node (start tag) and corresponding end node (end tag) are not returned. 例如,如果你具有以下内容:For example, if you had the following:

<node>  
 this <child id="123"/>  
</node>  

ReadInnerXml 返回 this <child id="123"/>ReadInnerXml returns this <child id="123"/>

此方法按以下方式处理元素节点和属性节点:This method handles element and attribute nodes in the following manner:

节点类型Node type 调用之前的位置Position before the call XML 片断XML fragment 返回值Return value 调用后的位置Position after the call
Element item1 开始标记上。On the item1 start tag. <item1>text1</item1><item2>text2</item2><item1>text1</item1><item2>text2</item2> text1text1 item2 开始标记上。On the item2 start tag.
Attribute attr1 属性节点上。On the attr1 attribute node. <item attr1="val1" attr2="val2">text</item><item attr1="val1" attr2="val2">text</item> val1val1 保留在 attr1 属性节点上。Remains on the attr1 attribute node.

如果读取器定位在叶节点上,则调用 ReadInnerXml 等效于调用 ReadIf the reader is positioned on a leaf node, calling ReadInnerXml is equivalent to calling Read. 方法返回String.Empty (属性节点除外,在这种情况下,返回属性的值)。The method returns String.Empty (except for attribute nodes, in which case the value of the attribute is returned).

此方法检查格式正确的 XML。This method checks for well-formed XML. ReadInnerXml 如果XmlValidatingReader从调用,则此方法还会验证返回的内容。If ReadInnerXml is called from an XmlValidatingReader, this method also validates the content returned.

XmlNodeReader、和ReadOuterXml XmlTextReader 类中实现时,方法是识别XmlValidatingReader命名空间的。As implemented in the XmlNodeReader, XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware.

有关此方法的异步版本,请参阅ReadInnerXmlAsyncFor the asynchronous version of this method, see ReadInnerXmlAsync.

适用于