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”的第二个子元素添加一些内容,请使用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"));              
    }
}
于 2012-07-31T18:08:16.717 回答