使用任意数量的节点生成XML

时间:2014-07-10 16:21:07

标签: java xml xml-generation

我刚开始使用java。我正在尝试写出一个具有以下形式的XML文件:

<option>
    <name>CompilerOptions</name>  
       <state>Directory1</state>
       <state>Directory2</state>
       <state>Directory3</state>
    </name>
</option>

目录数是任意的,取决于用户的选择。这是应该生成XML文件的代码部分。

    for(int i = 0; i < paths.size(); i++) {
    option.appendChild(doc.createElement("state").appendChild(doc.createTextNode(paths.get(i))));
    }
    child.appendChild(option);

问题是输出没有标记,我希望它由doc.createElement(“state”)创建。为什么不创建这些节点?

这是一个例子:

<option>
    <name>CompilerOptions</name>
    Directory1
    Directory2
    Directory3
</option>

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您正在调用option.appendChild()并将结果传递给

doc.createElement(...).appendChild(...)

但是appendChild()会返回新附加的子项,不是它附加到的节点。所以你实际上是用文本节点调用option.appendChild()。你想要:

Element state = doc.createElement("state");
state.appendChild(doc.createTextNode(paths.get(i)));
option.appendChild(state);