如果我们通过给定名称的 select all 属性,是否可以通过 powershell 获取整个 xpath?
我的 xml 文件有一个名为 lang 的属性。我用 //@lang 来查找属性值。
如果我能获得完整的 xpath [如 /root/child/@attribute ),它将避免混淆。
如果我们通过给定名称的 select all 属性,是否可以通过 powershell 获取整个 xpath?
我的 xml 文件有一个名为 lang 的属性。我用 //@lang 来查找属性值。
如果我能获得完整的 xpath [如 /root/child/@attribute ),它将避免混淆。
不。
.NET 没有“给定一个节点,创建一个 XPath 表达式”功能。虽然在理论上这很容易(迭代到父级,获取每个级别的兄弟级的基数来创建/node[n]/node[n]/...
)在实践中这样的 XPath 表达式是无用的,因为它们与特定的文档相关联。
另一个匹配模式的文档可能在每个级别具有不同数量的子级,并且可能具有不同的顺序;这样的 XPath 将找不到等效节点。
考虑:
<root>
<child1 attr1='foo'/>
</root>
和
<root>
<child1 attr1='bar'/>
<child1 attr1='foo'/>
</root>
从第一个文档生成的表达式/root/child1[1]/@attr1
将在第二个文档中找到一个不同的——尽管相似的——节点。