.net XmlReader-将当前节点读取为字符串
在下面的代码段中,当我遇到一个元素时,使用XmlReader。我想按原样阅读,包括元素中的所有属性和名称空间装饰。使用oXml.Name属性,我只能获得标记名。是否有获取标签本身的函数.net XmlReader-将当前节点读取为字符串,.net,xml,vb.net,xmlreader,.net,Xml,Vb.net,Xmlreader,在下面的代码段中,当我遇到一个元素时,使用XmlReader。我想按原样阅读,包括元素中的所有属性和名称空间装饰。使用oXml.Name属性,我只能获得标记名。是否有获取标签本身的函数 oXml = XmlReader.Create(path, oXmlSettings) While oXml.Read() Select Case oXml.NodeType Case XmlNodeType.Element 'Read Element as-is
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位于标记列表中,因此使用ReadOuterXml编写,但解析器无法获取以下“!”字符
<para>
Test blabla <loc1 href="test">complicated</loc1>!
</para>
测试布拉布拉复杂!
我还没有尝试过,但我不希望您在调用ReadOuterXml后必须快速转发阅读器。我希望读取外部XML的行为会消耗它
你试过了吗?是的,它确实很快,但我相信它错过了比赛结束后的下一场比赛。是因为我已经做了oXml.Read()?在ReadOuterXml之后是否再次调用Read?如果是这样的话,那就是伤害你的调用。请查看更新的代码片段,我相信Read在之后会被有效调用?你将再次循环,所以是的,它将再次调用Read。调用ReadOuterXml后立即查看当前节点。