首页 > 解决方案 > 在 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?

标签: javaxmldom4j

解决方案


您需要为新元素分配正确的命名空间;在这种情况下,与父元素相同的命名空间:

    Element newElement = DocumentHelper.createElement(QName.get("new-element", element.getNamespace()));

推荐阅读