gpt4 book ai didi

java - 如何使用 for 循环编写 XML 文件以将元素追加到前一个元素

转载 作者:行者123 更新时间:2023-11-29 03:01:52 25 4
gpt4 key购买 nike

我正在尝试用 Java 编写 XML 文件。我想要一个用元素名称填充的字符串数组,如下所示:String[] elements = {"a", "b", "c", "d"}; 我想要一个 for 循环,它将遍历数组并使第一个元素成为根元素的子元素,第二个元素成为第一个元素的子元素,第三个元素成为第二个元素的子元素,等等。

目标是拥有一个如下所示的 XML 文件:

<root>
<a>
<b>
<c>
<d>
</d>
</c>
</b>
</a>
</root>

到目前为止,这是我的 Java 代码:

package test;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Test {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element root = document.createElement("root");
document.appendChild(root);

String[] elements = {"a", "b", "c", "d"};

for (int i = 0; i < elements.length; i++) {
Element element = document.createElement(elements[i]);
root.appendChild(element);
}

TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File("C:/test.xml"));

transformer.transform(source, result);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
}

现在 for 循环只是将数组中的所有元素附加到根,因此 XML 文件如下所示:

<root>
<a/>
<b/>
<c/>
<d/>
</root>

我想要一个 for 循环,使每个元素成为前一个元素的子元素。

最佳答案

问题是您将每个 XML 元素附加到根元素而不是新创建的元素。

对您的代码进行的最小更改是将 root 设置为新创建的元素:

for (int i = 0; i < elements.length; i++) {
Element element = document.createElement(elements[i]);
root.appendChild(element);
root = element; // <-- updates the root element to the newly created element
}

这样,每个创建的元素都将附加到最后一个元素。

输出:

<root>
<a>
<b>
<c>
<d />
</c>
</b>
</a>
</root>

关于java - 如何使用 for 循环编写 XML 文件以将元素追加到前一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com