XML とその解析に関する質問がありました。JDOM を使用して XML ファイルを解析していますが、少し問題があります。
私の XML ファイルのサンプルは次のようになります。
<IO name="Bus" type="Class">
<ResourceAttribute name="Bandwidth" type="KiloBitPerSecond" value="50" />
</IO>
Bus はクラス IO のオブジェクト インスタンスです。オブジェクトは name プロパティと type プロパティを取得しました。さらに、サンプルのように、値が 50 の属性帯域幅とデータ型 KiloBitPerSecond のように、いくつかの属性があります。
したがって、次のようにファイルをループしたい場合:
for(Element packages : listPackages)
{
Map<String, Values> valueMap = new HashMap<String, Values>();
List<Element> objectInstanceList = packages.getChildren();
for(Element objects : objectInstanceList)
{
List<Element> listObjectClasses = objects.getChildren();
for(Element classes : listObjectClasses)
{
List<Element> listObjectAttributes = classes.getChildren();
for(Element objectAttributes : listObjectAttributes)
{
List<Attribute> listAttributes = objectAttributes.getAttributes();
for(Attribute attributes : listAttributes)
{
String name = attributes.getName();
String value = attributes.getValue();
AttributeType datatype = attributes.getAttributeType();
Values v = new Values(name, datatype, value);
valueMap.put(classes.getName(), v);
System.out.println(name + ":" + value);
}
}
}
}
//System.out.println(valueMap);
}
values はオブジェクト属性を定義するクラスです:
public class Values{
private String name;
//private AttributeType datatype;
private String value;
以上がコードの残りの部分です。それに関連して2つの質問があります。現時点では、最初のものがより優先されます。
object(Attribute.Name = Bandwidth; Attribute.Value = 50) の値を取得するにはどうすればよいですか? 私が得る代わりに
名前:バスの種類:クラス
追加の for ループを考えましたが、JDOM クラス属性には getAttributes() というメソッドがありません。
質問 1 がないと先に進めないので、これは 2 番目の優先事項です。サンプルでわかるように、属性は名前、型、値の 3 つのプロパティを取得します。サンプルのトリプルプットを抽出するにはどうすればよいですか。JDOM は、属性の名前と値の 2 つのプロパティを認識しているようです。
事前に感謝します。うまくいけば、私は自分の自己を表現することができました。
編集: 追加の for ループを追加したため、出力は次のようになります。
name:Bandwidth
type:KiloBitPerSecond
value:50
つまり、name はそのプロパティの名前で、value は name の値です。それを知らなかった。少なくとも質問 1 はより明確になり、2 に取り組むことができますが、新しい情報により 2 がより明確になります。