我想知道如何修改这个 XML 文件,
<?xml version="1.0"?>
<nombre>
<id>12345</id>
</nombre>
使用 Java 中的 DOM 解析器将其转换成这样的 XML 文件,
<?xml version="1.0" encoding="UTF-8" ?>
<heat>2013-09-09</heat>
<nombre>
<id>12345</id>
</nombre>
我已经尝试过,但不起作用,
public class Test {
public static final String xmlFilePath = "src/vnx.xml";
public static final String xml2FilePath = "src/input2.xml";
public static void main(String argv[]) {
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(xmlFilePath);
Element version = document.createElement("heat");
version.appendChild(document.createTextNode("2013-09-09"));
document.appendChild(version);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(document);
StreamResult streamResult = new StreamResult(new File(xml2FilePath));
transformer.transform(domSource, streamResult);
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (SAXException sae) {
sae.printStackTrace();
}
}
}
它返回一个解析错误。任何建议都会非常有帮助。非常感谢!
最佳答案
尝试此代码,我使用 Xpath 导航 XML 并创建了新节点并附加到 XML。
或者没有 XPATH 你也可以做到。 以下代码没有Xpath。Xpath代码在注释中
try {
File inputFile = new File("src/vnx.xml");
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// creating input stream
Document doc = builder.parse(inputFile );
//Xpath compiler
//XPathFactory xpf = XPathFactory.newInstance();
// XPath xpath = xpf.newXPath();
//XPath Query
// XPathExpression expr = xpath.compile("/");
//Node attributeElement = (Node) expr.evaluate(doc, XPathConstants.NODE);
//New Node
Node childnode=doc.createElement("heat");
doc .appendChild(childnode);
childnode.setTextContent("12-34-56");
// writing xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
File outputFile = new File("src/input2.xml");
StreamResult result = new StreamResult(outputFile );
// creating output stream
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
如果找不到文件,请检查 XML 文件的路径 谢谢
关于java - 如何使用 DOM 解析器在此 XML 文件中添加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984323/