kos*_*tja 96 xml xpath namespaces xml-namespaces
我的目标是使用XPath从具有多个名称空间的多个xml文件中提取某些节点.只要我知道名称空间URI,一切正常.命名空间名称本身保持不变,但模式(XSD)有时是客户端生成的,即我不知道.然后我基本上有三种选择:
只使用一个模式用于命名空间,希望没有出错(我能确定吗?)
获取文档的子节点并查找带有命名空间URI的第一个节点,希望它在那里并只使用URI,希望它是正确的.可能由于多种原因而出错
不知何故告诉xpath:"看,我不关心命名空间,只需找到具有此名称的所有节点,我甚至可以告诉您命名空间的名称,而不是URI".这就是问题......
这不是许多"我的xpath表达不起作用的重复,因为我不知道命名空间感知" 这里或这里发现的问题.我知道如何使用命名空间感知.只是没有如何摆脱它.
Dir*_*mar 146
您可以使用local-name()XPath函数.而不是选择像这样的节点
/path/to/x:somenode
Run Code Online (Sandbox Code Playgroud)
您可以选择所有节点并筛选具有正确本地名称的节点:
/path/to/*[local-name() = 'somenode']
Run Code Online (Sandbox Code Playgroud)
And*_*rez 16
您可以使用更简洁的语法在XPath2.0中执行相同的操作:
/path/to/*:somenode
Run Code Online (Sandbox Code Playgroud)
js2*_*010 11
或者你可以使用 name():
/path/to/*[name() = 'somenode']
Run Code Online (Sandbox Code Playgroud)
或者只搜索属性:
//*[@attribute="this one"]
Run Code Online (Sandbox Code Playgroud)
如果将 xml 作为 powershell 对象打开,它将忽略命名空间:
[xml]$xml = get-content file.xml
$xml.path.to.somenode
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81152 次 |
| 最近记录: |