5

XPATH式エンジンでapachecommons構成XMLConfigurationオブジェクトを使用して、XMLファイルを照会しています。私はxpathとapachecommonsに不慣れで、構文に問題があります。

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

1つのオプションは、要素を選択し、それらをオブジェクト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

コモンズXML構成を使用して、このxmlサンプルのように特定の属性に一致するタグの値を取得するにはどうすればよいですか?

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

一致するmy_name属性値の値FirstNameを取得したい

于 2013-05-31T15:33:54.797 に答える