少し問題が発生しました。理論的には修正する方法さえ知っていますが、実際には実行できません。
私はこのコードを手に入れました:
Multimap<String, String> mm = HashMultimap.create();
public MultiMapper(String AttributeName, String AttributeValue)
{
mm.put(AttributeName, AttributeValue); }
ここから呼び出す:
for(Element attributeFirst : attributeTop.getChildren()) {
String attributeTopName = attributeTop.getName().toString();
MultiMapper m = new MultiMapper();
for(Attribute attributeSecond: attributeFirst.getAttributes()){
String AttributeName = attributeSecond.getName().toString();
String AttributeValue = attributeSecond.getValue().toString();
m.MultiMapper(AttributeName, AttributeValue);
}
}
XML ファイル:
編集: main-Method (名前を変更しました) の唯一の目的は、新しい Multimap を作成し、そのフィールドに値を入力することです。例: 最初の for ループは 5 つの要素を取得したので、5 つの異なるマルチマップを生成したいのですが、それが今の私の最大の関心事です。取得できません。2 番目の for ループには、マップの値が含まれています。これらの値は、main メソッドの put によってマップに入れられます。
気になる 2 番目の質問: attributeTopName は親ノードの名前であり、意図的に Map にそのような名前を付けたかったのです。しかし、Datatype String を Multimap にマップすることはできません。この Attribute を一種のキーとしてマップに入れるにはどうすればよいでしょうか。そのリストを参照したい場合は、attributeNameTop 値を使用して Multimap を取得します。コード例のように、mm の代わりに attributeNameTop の値が必要です。
この編集により、私が何をしようとしているのかが明確になることを願っています。
Edit2: 私の入力ファイルは次のようになります。すべての行は、クラス ダイアグラム内のクラスを表し、その属性と値を示します。すべてのクラスのオブジェクトを作成し、プロジェクトでさらに使用するためにどこかに保存したいと考えています。Inputfile をループすると、最初のクラスとして AttributeTopName1 を取得し、次のループで取得した同じ名前とプロパティを使用して新しいオブジェクトを作成する必要があります。私はそれをテストしました。入力ファイルは正しい形式であり、解析はこのタスクに問題ありません。
<Model>
<Package>
<AttributeTopName1 Attribute1=AttributeValue1 Attr2=AttributeValue2 />
<AttributeTopName2 Attribute1=AttributeValue1 Attr2=AttributeValue2 />
</Package>
</Model>