在XML文件的所有元素级别中搜索节点
本文关键字:搜索 节点 元素 XML 文件 | 更新日期: 2023-09-27 18:25:45
我有一些XML文件的格式版本,需要使用C#上传到数据库。但我现在不知道我需要导入的标签是什么级别的,因为根据xml的版本,标签可能是其他组或标签的内部。
XML文件的一些示例
Ex1)
<a>
<group1>
<tag>searched tag</tag>
</group1>
<b> </b>
<c> </c>
</a>
Ex2)
<a>
<b>
<group1>
<c>
<tag>searched tag</tag>
</c>
</group1>
</b>
</a>
搜索到的标记将始终位于group1标记内,并且所有文件都具有xmlns和schema属性。
我尝试使用xml。选择SingleNode(''group1''tag),但当文件具有架构标头和命名空间配置时会引发错误。
提前谢谢。
如果您确定元素tag
在group1
之下,并且它们之间可以有任意级别的中间节点,并且假设所有元素都在全局命名空间中,则使用:(注意斜线的方向):
xml.SelectSingleNode("//group1//tag")
但是,如果不知道各个元素在哪个xmlns
中,那么您需要这样做:
xml.SelectSingleNode("//*[local-name()='group1']//*[local-name()='tag']")
然而,请注意,在MSXml解析器中对大文件使用"//"可能有点慢,因此速度会更快,例如,如果您可以隔离到各个节点的确切路径,然后可以使用|
例如,在您的示例中,如果标签可以是"非此即彼"Ex1
或Ex2
,则:
/a/group1/tag | /a/b/group1/c/tag
应该起作用。