Java 使用Commons配置获取特定的XML子值

Java 使用Commons配置获取特定的XML子值,java,xml,xpath,apache-commons,apache-commons-config,Java,Xml,Xpath,Apache Commons,Apache Commons Config,假设我们有以下XML: <root> <sub> <id>1</id> <values> <value>1</value> <value>2</value> </values> </sub> <sub> <id&g

假设我们有以下XML:

<root>
    <sub>
        <id>1</id>
        <values>
            <value>1</value>
            <value>2</value>
        </values>
    </sub>
    <sub>
        <id>2</id>
        <values>
            <value>16</value>
            <value>15</value> 
        </values>
    </sub>
</root>

1.
1.
2.
2.
16
15
我想使用Apache Commons配置获得的是:我想使用
id
2获取
sub
的所有值。我怎样才能做到这一点?我在文档中找不到关于如何使用动态层次结构编号进行查询的信息。

您可以使用XPath:

//sub[id = 2]/values/value

/
通常会导致执行缓慢(导致搜索整个XML(子)树)

使用

/*/sub[id = 2]/values/value

这将选择任何
value
元素,该元素是
values
元素的子元素,该元素是
sub
元素的子元素,其
id
子元素具有字符串值
“2”
,并且(该
sub
)是XML文档顶部元素的子元素。

太棒了,这很快。工作完美。似乎可以在本主题中改进文档:)谢谢,这在处理大型xml配置时非常有用