【发布时间】:2016-10-19 10:13:30
【问题描述】:
我有以下 XML 文件格式,我必须添加另一个 car 标记,其 id 编号跟在前一个标记之后(在本例中为 3):
<vehicles>
<cars>
<car id="1">
<name>ferrari</name>
</car>
<car id="2">
<name>lamborgini</name>
</car>
</cars>
</vehicles>
我已经找到了添加另一个元素的解决方案,它看起来像这样:
try {
File inputFile = new File(file);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("car");
Element car= doc.createElement("car");
car.setAttribute("id", "3");
Element node = doc.createElement("name");
node.setTextContent("audi");
car.appendChild(node);
nList.item(0).getParentNode().appendChild(car);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(inputFile);
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
现在我有三个问题:
- 如何使用最简单的解决方案将具有正确 ID 的新“汽车”添加到末尾(非硬编码)
- 格式化(不那么重要):如何包含与现有元素(制表符、空格)具有相同格式的元素
- 如何检查“汽车”标签是否已经存在
谢谢!
【问题讨论】:
标签: java dom xml-parsing