我正在尝试使用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编写多个具有相同名称的元素?
谢谢..
答案 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"));
}
}