2008-10-24 72 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

相关问题