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 。