xpath按命名空间内容选择

时间:2018-04-01 04:09:28

标签: xpath xml-namespaces

我正在考虑在配置文件中使用xml命名空间。如果我使用命名空间标记配置文件内容,则会识别程序版本的选项。

有没有办法选择具有特定命名空间版本号和更低的所有节点?这允许任何版本的应用程序无需更改即可读取任何版本配置文件。

示例:

  <ns1:config xmlns:ns1="version 1.0">
     <ns1:somesetting>blah</ns1:somesetting>
     <ns2:SomeNewSetting xmlns:ns2="version 2.0">foob</ns2:SomeNewSetting>
  </ns1:config>

应用版本1选择namespace =“version 1.0”。

应用版本2选择namespace =“version 1.0”或namespace =“version 2.0”。

是否有比蛮力解决方案更好的方法?

1 个答案:

答案 0 :(得分:1)

使用命名空间来管理XML词汇表的版本控制通常被认为是一个坏主意。您的问题很好地说明了其中一个原因:命名空间不是有序的。使用版本属性要好得多。基于属性值的动态选择元素比命名空间动态选择要容易得多。