xpath select 按命名空间内容
xpath select by namespace content
我正在考虑在我的配置文件中使用 xml 命名空间。如果我使用命名空间标记配置文件内容,则会识别程序版本的选项。
有没有办法 select 具有特定命名空间版本号 和更低 的所有节点?这允许任何版本的应用程序读取任何版本的配置文件而无需更改。
示例:
<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 selects 命名空间 = "version 1.0".
应用程序的第 2 版 selects 命名空间 = "version 1.0" 或命名空间 = "version 2.0".
有没有比暴力破解更好的方法?
使用命名空间来管理 XML 词汇表的版本通常被认为是一个坏主意。您的问题很好地说明了原因之一:名称空间未排序。使用版本属性要好得多。基于属性值动态选择元素比按名称空间动态选择要容易得多。
我正在考虑在我的配置文件中使用 xml 命名空间。如果我使用命名空间标记配置文件内容,则会识别程序版本的选项。
有没有办法 select 具有特定命名空间版本号 和更低 的所有节点?这允许任何版本的应用程序读取任何版本的配置文件而无需更改。
示例:
<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 selects 命名空间 = "version 1.0".
应用程序的第 2 版 selects 命名空间 = "version 1.0" 或命名空间 = "version 2.0".
有没有比暴力破解更好的方法?
使用命名空间来管理 XML 词汇表的版本通常被认为是一个坏主意。您的问题很好地说明了原因之一:名称空间未排序。使用版本属性要好得多。基于属性值动态选择元素比按名称空间动态选择要容易得多。