XmlReader.MoveToContent 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
检查当前节点是否是内容(非空白文本、CDATA
、Element
、EndElement
、EntityReference
或 EndEntity
)节点。 如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 它跳过以下类型的节点:ProcessingInstruction
、DocumentType
、Comment
、Whitespace
或 SignificantWhitespace
。
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->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。