XmlReader.MoveToContent 方法

定义

检查当前节点是否是内容(非空白文本、CDATAElementEndElementEntityReferenceEndEntity)节点。 如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 它跳过以下类型的节点:ProcessingInstructionDocumentTypeCommentWhitespaceSignificantWhitespace

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

返回

XmlNodeType

此方法找到的当前节点的 NodeType;如果读取器已到达输入流的末尾,则为 XmlNodeType.None

例外

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

在上一次异步操作完成之前调用了 XmlReader 方法。 在此情况下,会引发 InvalidOperationException 并显示消息“异步操作已在进行中。”

示例

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

if ( reader->MoveToContent() == XmlNodeType::Element &&
   reader->Name->Equals( "price" ) )
{
   _price = reader->ReadString();
}
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

适用于