0

JDOM を使用して同じ名前の複数の要素を作成しようとしています。XML ファイルは次のように出力されます。

   <data>
    <series name="Related">
      <point name="aaaa" y="1" />
      <point name="bbbb" y="0" />
      <point name="cccc" y="2" />
      <point name="dddd" y="3" />          
    </series>

    <series name="Not-Related" >
     <point name="CE901" y="1" />
      <point name="aaa" y="1" />
      <point name="bbb" y="1" />
      <point name="rrr" y="1" />
      <point name="rrr" y="1" />
     </series>
   </data>

そして、私はそれを次のようにコーディングしようとしました:

  for (int i = 0; i < 2; i++) {
  doc1.getRootElement().getChild("charts").getChild("chart").getChild("data").addContent(new Element("series").setAttribute("name", "Related"));             
            for (int j = 0; j < 4; j++) {
                doc1.getRootElement().getChild("charts").getChild("chart").getChild("data").getChild("series").addContent(new Element("point").setAttribute("name", "CE901").setAttribute("y","1"));              
            }
        }

ただし、上記のコードは次の XML を出力しますが、これは間違っています。

<data>
<series name="Related">
<point name="CE901" y="1"/>
<point name="CE901" y="1"/>
<point name="CE901" y="1"/>
<point name="CE901" y="1"/>  
<point name="CE901" y="1"/>
<point name="CE901" y="1"/>
<point name="CE901" y="1"/>
<point name="CE901" y="1"/>
</series>
<series name="Related"/>

JDOMを使用して同じ名前の複数の要素を正確に記述する方法を見つけるのを手伝ってくれませんか?

ありがとうございました..

4

1 に答える 1

0

getChild("data")「data」という名前の最初の子を返します。「data」という名前の 2 番目の子に何かを追加する必要がある場合は、 を使用getChildren()して、返されたリストから 2 番目の要素を取得します。

毎回 getter のチェーン全体を繰り返す代わりに変数を使用すると、コードがはるかに読みやすく (そして効率的) になることに注意してください。

Element chart = doc1.getRootElement().getChild("charts").getChild("chart");
for (int i = 0; i < 2; i++) {
    Element data = chart.getChildren("data").get(i);
    Element series = new Element("series").setAttribute("name", "Related");
    data.addContent(series);             
    for (int j = 0; j < 4; j++) {
        series.addContent(new Element("point").setAttribute("name", "CE901")
                                              .setAttribute("y","1"));              
    }
}
于 2012-07-31T18:08:16.717 に答える