2008-10-24 28 views
2

在下面的代碼片段中,當遇到元素時使用XmlReader。我想按原樣讀取它,包括元素中的所有屬性和名稱空間裝飾。使用oXml.Name屬性,我只能得到標籤名稱。有沒有一個函數來獲取標籤本身?XmlReader - 以字符串形式讀取當前節點

oXml = XmlReader.Create(path, oXmlSettings) 
While oXml.Read() 
    Select Case oXml.NodeType 
     Case XmlNodeType.Element 
     'Read Element as-is 
     If taglist.contains(oXml.Name) 
      stringbuilder.Append(oXml.ReadOuterXml()) 
     End If 
     Case XmlNodeType.Text 
     stringbuilder.Append(oXml.Value) 
    End Select 
End While 

我試過oXml.ReadOuterXml(),但它返回元素及其子內容。這可能是可以接受的,但是如何快速轉發我的XmlReader以忽略後續的XmlNodeType.Text和XmlNodeType.EndElement,這些將在剛剛從ReadOuterXml獲得的元素被解析時發生?

已更新:對於以下代碼片段,loc1位於taglist中,所以使用ReadOuterXml編寫,但解析器無法獲得以下「!」字符。

<para> 
    Test blabla <loc1 href="test">complicated</loc1>! 
</para> 

回答

3

我還沒有嘗試過,但我不希望你在調用ReadOuterXml之後必須快速轉發閱讀器。我期望讀取外部XML的行爲來消費它。

你試過了嗎?

+0

是的,它確實快進了,但我相信它會在EndElement之後的下一個事件中錯過。是否因爲我已經做了oXml.Read()? – Vincent 2008-10-24 17:10:01

相關問題