【发布时间】:2014-06-25 23:42:06
【问题描述】:
我需要将节点插入到我的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;
}
}
【问题讨论】:
-
我认为您这样做只是为了澄清:您的意思是“开始”而不是“乞求”吗?
-
当我插入新节点然后将节点添加到我的 xml 文件的开头
-
据我所知,您目前没有在文档中插入
aanywhere。您确定这是产生您现在显示的输出的代码吗? -
我以 a1 a2 为例,但它们都是 a
标签: java xml dom xml-parsing sax