5

我正在使用带有 XPATH 表达式引擎的 apache commons 配置 XMLConfiguration 对象来查询 XML 文件。我是 xpath 和 apache commons 的新手,语法有问题。

xml 文件如下所示:

<attrs>
    <attr name="my_name" val="the_val"/>
    <attr name="my_name2" val="the_val2"/>
</attrs>

我想要做的基本上是使用 commons 循环遍历所有属性并在每一行读取 name 和 val。我可以解决所有问题的唯一方法是使用 name 的值再次查询 xml。这种感觉对我来说是错误的,有没有更好的方法呢?

List<String> names = config.getList("attrs/attr/@name");
for( String name : names )
{
    String val = config.getString("attrs/attr[@name='" +name +"']/@val" );
    System.out.println("name:" +name +"   VAL:" +val);
}

也转换为字符串,我不确定处理它的正确方法。

4

2 回答 2

4

一种选择是选择元素并将它们作为对象attr进行迭代:HierarchicalConfiguration

List<HierarchicalConfiguration> nodes = config.configurationsAt("attrs/attr");
for(HierarchicalConfiguration c : nodes ) {
    ConfigurationNode node = c.getRootNode();
    System.out.println(
        "name:" + ((ConfigurationNode) 
                            node.getAttributes("name").get(0)).getValue() +
        " VAL:" + ((ConfigurationNode) 
                            node.getAttributes("val").get(0)).getValue());
}

这不是很漂亮,但它有效。

于 2012-01-11T23:40:19.127 回答
0

如何使用 commons XML 配置获取与给定属性相匹配的标签值,例如在这个 xml 示例中?

<attrs>
    <attr name="my_name"> First Name</attr>
    <attr name="my_name2"> First Name 2 </attr>
</attrs>

想要为匹配的 my_name 属性值获取值 First Name

于 2013-05-31T15:33:54.797 回答