Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net XmlReader-将当前节点读取为字符串_.net_Xml_Vb.net_Xmlreader - Fatal编程技术网

.net XmlReader-将当前节点读取为字符串

.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

在下面的代码段中,当我遇到一个元素时,使用XmlReader。我想按原样阅读,包括元素中的所有属性和名称空间装饰。使用oXml.Name属性,我只能获得标记名。是否有获取标签本身的函数

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后立即查看当前节点。