在JDOM中创建多个具有相同名称的元素

时间:2012-07-31 17:57:08

标签: java xml jdom

我正在尝试使用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编写多个具有相同名称的元素?

谢谢..

1 个答案:

答案 0 :(得分:0)

getChild("data")返回名为“data”的第一个子项。如果您需要向名为“data”的第二个子项添加内容,请使用getChildren(),并从返回的列表中获取第二个元素。

请注意,如果您每次使用变量而不是重复整个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"));              
    }
}