XMLファイルを照会するために、XPATH式エンジンでApache Commons構成のXMLConfigurationオブジェクトを使用しています。私はxpathとapacheのコモンズが新しく、構文に問題があります。私は基本的にやりたいことはすべての属性を通じてコモンズループであり、各ラインで名前とvalを読むapacheコモンの設定を使用して属性を持つ空のXML要素を照会します。xpath
<attrs>
<attr name="my_name" val="the_val"/>
<attr name="my_name2" val="the_val2"/>
</attrs>
:よう
xmlファイルを検索します。私がすべてをつかむために動くことができる唯一の方法は、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);
}
また、文字列に変換する上で、私はそれに対処する正しい方法がわかりません。非常にきれいではないが、それが動作することを
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());
}
:
してみてください。この 'attrsに/ attrの/の値ファーストネームを取得したいです| // attr/@ val' – RanRag
これは両方の値を持っていますが、すべての名前が出てきてすべての値が続くような長い文字列リストにあります。順序が整っている間は、おそらくval_pos = size()/ 2のような計算をしてからループを進めるとi + val_posを得る必要があります。あまり清潔ではありませんが、いくつかのクエリを保存します。これまでのところ、時間の制約のために、再度明確にするために再度クエリすることに固執しますが、その形式のコモンでxmlファイルをループする良い方法を歓迎します。 –