gpt4 book ai didi

java - 如何在 xml 文件开头插入节点?

转载 作者:行者123 更新时间:2023-11-30 03:54:39 25 4
gpt4 key购买 nike

我需要将节点插入到我的 XML 文件的开头,在网络中搜索后,我找到了关键字 insertBefore 但我无法在我的代码中应用此关键字。但是,当我使用 appendChild 时,然后插入 this 关键字,该元素将插入到 xml 文件的末尾。如何使用 insertBefore 关键字插入到 xml 树的开头。
例如:

   <n>
<a2>
<b></b> <c></c>
</a2>

<a1>
<b></b> <c></c>
</a1>
</n>

我需要将元素插入到 xml 文件的开头,与以下内容相同:

<n>
<a1>
<b></b> <c></c>
</a1>

<a2>
<b></b> <c></c>
</a2>
</n>

我的java代码:

public void insertNewProject(Project entity) {
String filePath = "location.xml";
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc;

doc = dBuilder.parse(xmlFile);

doc.getDocumentElement().normalize();

Node n = doc.getElementsByTagName("n").item(0);

Element a = doc.createElement("a");
n.appendChild(a);

Element b = doc.createElement("b");
b.appendChild(doc.createTextNode(entity.getLocation()));
a.appendChild(b);

Element c = doc.createElement("c");
c.appendChild(doc.createTextNode(entity.getName()));
a.appendChild(c);

doc.getDocumentElement().normalize();

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
StreamResult streamResult = new StreamResult(new File("location.xml"));
transformer.transform(domSource, streamResult);

} catch (ParserConfigurationException pce) {
return;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException tfe) {
return;
}

}

最佳答案

为什么不能使用firstChild方法然后插入之前?喜欢

n.insertBefore(a, n.getFirstChild());

完整代码

public void insertNewProject(Project entity) {
String filePath = "location.xml";
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc;

doc = dBuilder.parse(xmlFile);

doc.getDocumentElement().normalize();

Node n = doc.getElementsByTagName("n").item(0);

Element a = doc.createElement("a");
n.insertBefore(a, n.getFirstChild());

Element b = doc.createElement("b");
b.appendChild(doc.createTextNode(entity.getLocation()));
a.appendChild(b);

Element c = doc.createElement("c");
c.appendChild(doc.createTextNode(entity.getName()));
a.appendChild(c);

doc.getDocumentElement().normalize();

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
StreamResult streamResult = new StreamResult(new File("location.xml"));
transformer.transform(domSource, streamResult);

} catch (ParserConfigurationException pce) {
return;
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (TransformerException tfe) {
return;
}
}

关于java - 如何在 xml 文件开头插入节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544180/

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