Запрос пустых элементов XML с атрибутами с использованием конфигурации Apache Commons xpath - PullRequest
5 голосов
/ 12 января 2012

Я использую объект конфигурации Apache commons XMLConfiguration с механизмом выражений XPATH для запроса файла XML.Я новичок в xpath и apache commons, и у меня возникли проблемы с синтаксисом.

XML-файл выглядит так:

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

Что я хочу сделать, так это в основном с циклом общих через всеатрибуты и читать имя и val в каждой строке.Единственный способ получить все, что нужно - это снова запросить xml со значением name.Мне кажется, что это неправильно, есть ли лучший способ сделать это?

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);
}

Кроме того, преобразование наверх в String, я не уверен, как правильно с этим справиться.

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Один из вариантов - выбрать элементы 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());
}

Это не очень красиво, но работает.

0 голосов
/ 31 мая 2013

Как получить значение тега, которое соответствует данному атрибуту, как в этом примере XML, с использованием конфигурации XML с общим достоянием?

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

Хотите получить значение Имя для соответствующего значения атрибута my_name

...