java - java - 我在java中附加子元素后如何保存xml
问题描述
我的代码只是将新节点和子节点添加到我的 xml 文件中,然后将其打印为输出。现在如何在这些添加后再次保存 xml 文件
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("src\\xpath\\Products.xml");
//make new node (product)
Element newproduct = document.createElement("product");
document.getDocumentElement().appendChild(newproduct);
//add attribute to the new product
newproduct.setAttribute("id", id);
//add name to the new product
Element newename = document.createElement("name");
newproduct.appendChild(newename);
newename.appendChild(document.createTextNode(name));
//add price to the new product
Element neweprice = document.createElement("price");
newproduct.appendChild(newename);
neweprice.appendChild(document.createTextNode(price));
// print XML
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(document);
StreamResult console = new StreamResult(System.out);
transformer.transform(source, console);
System.out.println("\nNew Product added to product.xml.");
} catch (Exception e) {
System.err.println(e.getMessage());
}
解决方案
代替打印到控制台
StreamResult console = new StreamResult(System.out);
保存到文件
StreamResult result = new StreamResult(new File("src\\xpath\\Products.xml"));
transformer.transform(source, result);
推荐阅读
- google-api - Youtube API 配额错误
- vba - 如何从 vba 解码代码然后运行它?
- javascript - 如何在 javascript 中测试与 async/await 混合的计时器
- selenium - 有时硒没有得到检查元素
- c# - 如何将动态创建的组件设置为等于手动创建的组件?设置位置相等,因为容器不准确吗?
- huggingface-transformers - 运行 allennlp test-install 时遇到类型错误处理
- php - 搜索 + 多个过滤器同位素 JQuery
- selenium-webdriver - Selenium 集线器/节点因 CLIENT_STOPPED_SESSION 而终止
- sql - 如何防止 TRY/CATCH 预期会话 TSQL 的错误
- c# - 将pdf从任何大小缩放到Letter