java - 在 java dom4j 的 xml 文档中间的某个位置添加新创建的元素时添加了多余的空名称空间
问题描述
我有这样的xml模板:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="..." xmlns:xsi="..." xsi:schemaLocation="...">
<body>
<content id="unique_id1">
</content>
<content id="unique_id2">
</content>
</body>
</root>
我想要实现的是我想content
通过相应的 id 找到它们来在标签内插入新元素。
如:
Element element = doc.selectSingleNode(//*[@id='unique_id2']");
Element newElement = DocumentHelper.createElement("new-element");
newElement.addText("new element text");
element.add(newElement);
这段代码可以在newElement
里面插入具体的element
. 但是在 中newElement
,会自动添加一个空白命名空间。
插入后,xml 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="..." xmlns:xsi="..." xsi:schemaLocation="...">
<body>
<content id="unique_id1">
</content>
<content id="unique_id2">
<new-element xmlns="">new element text</new-element>
</content>
</body>
</root>
那么如何停止将空命名空间添加到newElement
?
解决方案
您需要为新元素分配正确的命名空间;在这种情况下,与父元素相同的命名空间:
Element newElement = DocumentHelper.createElement(QName.get("new-element", element.getNamespace()));
推荐阅读
- sql - 我们可以在默认的“sysssislog”日志表中添加一列,或者至少自定义它的消息吗?
- html - 无法在 Ionic Angular 中更新侧边菜单自定义滚动条
- python - 如何使用 String 实例插入 SQL 语句?
- python - Python Pandas - 根据其他列值选择列
- javascript - 如何在javascript中同时使用超时和中断
- ios - 启用 bicode 的 Firework ios sdk 存档错误
- android - 与 viewpager 内的片段的父片段通信
- python - 为什么我不能连接这个列表来切换字符?
- prometheus - prometheus alertmanager 中基于时间的警报
- cluster-computing - 避免在集群环境中同时访问 infinispan 缓存