XmlReader.MoveToContent 方法

定义

检查当前节点是否为内容(非空白文本、CDATAElementEndElementEntityReferenceEndEntity)节点。 如果节点不是内容节点,读取器将跳到下一个内容节点或文件末尾。 它跳过以下类型的节点:ProcessingInstruction、、DocumentTypeCommentWhitespaceSignificantWhitespace

public:
 virtual System::Xml::XmlNodeType MoveToContent();
public virtual System.Xml.XmlNodeType MoveToContent();
abstract member MoveToContent : unit -> System.Xml.XmlNodeType
override this.MoveToContent : unit -> System.Xml.XmlNodeType
Public Overridable Function MoveToContent () As XmlNodeType

返回

NodeType方法找到的当前节点,或者XmlNodeType.None读取器是否已到达输入流的末尾。

例外

输入流中遇到的 XML 不正确。

在上一个异步操作完成之前调用了一个 XmlReader 方法。 在这种情况下, InvalidOperationException 会引发消息“正在进行异步操作”。

示例

如果要编写可以跳过随机 XML 标记的代码而不中断,这非常有用。 例如,假设你有以下代码:

if (reader.MoveToContent() == XmlNodeType.Element && reader.Name == "price")
 {
    _price = reader.ReadString();
 }
If reader.MoveToContent() = XmlNodeType.Element And reader.Name = "price" Then
    _price = reader.ReadString()
End If

此代码可以在不中断的情况下处理以下输入:

<price>123.4</price>

<?xml version="1.0"><!DOCTYPE price SYSTEM
  "abc"><price>123.4</price>

<?xml version="1.0"><!DOCTYPE price SYSTEM "abc"
  [<!ENTITY p
  "123.4">]><price>&p;</price>

<!-- some test comment --><?processing
  instruction?><price>123.4</price>

注解

如果当前节点是属性节点,此方法会将读取器移回拥有该属性的元素。

有关此方法的异步版本,请参阅 MoveToContentAsync

适用于