java - JAVA,如何在 xml 中编辑节点内的文本?
问题描述
所以假设我有当前的 XML 文件。
<?xml version="1.0" encoding="UTF-8"?>
<config>
<apps>
<app name="app1">
<url>someUrl</url>
<username>user1</username>
<password>qwerty123</password>
</app>
<app name="app2">
<url>someUrl</url>
<username>user2</username>
<password>asdasdasd</password>
</app>
<app name="app3">
<url>someUrl</url>
<username>user3</username>
<password>123456789</password>
</app>
</apps>
</config>
我已经广泛搜索了如何将第一个密码(qwerty123)编辑为其他密码,然后保存文件,但我找不到合适的解决方案。
这里有人知道我该怎么做吗?
解决方案
使用 DOM 解析器的示例解决方案:
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<config>\n" +
" <apps>\n" +
" <app name=\"app1\">\n" +
" <url>someUrl</url>\n" +
" <username>user1</username>\n" +
" <password>qwerty123</password>\n" +
" </app>\n" +
" <app name=\"app2\">\n" +
" <url>someUrl</url>\n" +
" <username>user2</username>\n" +
" <password>asdasdasd</password>\n" +
" </app>\n" +
" <app name=\"app3\">\n" +
" <url>someUrl</url>\n" +
" <username>user3</username>\n" +
" <password>123456789</password>\n" +
" </app>\n" +
" </apps>\n" +
"</config>";
//here use your InputStream for example from file
InputStream inputStream = new ByteArrayInputStream(xml.getBytes());
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputStream);
doc.getDocumentElement().normalize();
doc.getElementsByTagName("password").item(0).getFirstChild().setNodeValue("new content");
//here use your outputStream for example file output stream
OutputStream outputStream = new ByteArrayOutputStream();
Source xmlSource = new DOMSource(doc);
Result outputTarget = new StreamResult(outputStream);
TransformerFactory.newInstance().newTransformer()
.transform(xmlSource, outputTarget);
//when you replace output stream with file output stream remove this, as this line is only for debugging
System.out.println(new String(((ByteArrayOutputStream) outputStream).toByteArray()));
推荐阅读
- firebase - 当互联网连接不起作用时,如何将数据添加到 Firestore?
- android - 任务':app:kaptDebugKotlin'的执行失败。尝试实现 Room 组件时
- r - 谁来报告有关 R 错误消息的错误?
- reactjs - 为什么我在从我的商店 Mobx-react 获取数据后得到 {Symbol(mobx Administration): ObservableObjectAdministration}
- web-scraping - IMPORTXML 从网站抓取数据时显示错误
- python - 事件中心重新生成缺少参数“参数”的键
- amazon-web-services - 如何将消息发布到另一个 AWS 账户中的推送通知端点?
- laravel - Laravel - 在正文中发送带有徽标的电子邮件
- kubernetes-helm - 在命令行上覆盖嵌套的 Helm 值不起作用
- javascript - 如何在 mySQL 的 api 调用中格式化 DATETIME 格式?