【发布时间】:2021-03-11 12:05:00
【问题描述】:
我想使用 dom4j 为 XML 文档的根元素添加一个默认名称空间,如下面的 sn-p 所示。使用 dom4j 执行此操作的正确方法是什么?
<?xml version="1.0" encoding="utf-8" ?>
<animals xmlns="http://zoo.domain.org/schema/animals" >
<animal id="1">
<elephant>
<name>Jumbo</name>
</elephant>
</animal>
</animals>
dom4j API 确实提供了 Element#addNamespace 方法,但 javadoc 告诉该前缀不能为空。
以下代码将生成 animals 的预期命名空间:
Document document = DocumentHelper.createDocument();
Element animals = document.addElement("animals")
.addNamespace("", "http://zoo.domain.org/schema/animals");
Element animal = animals.addElement("animal")
.addAttribute("id", "1");
animal.addElement("elephant")
.addElement("name")
.addText("Jumbo");
// write document to file etc.
...
...但是子元素animal 得到一个空字符串作为默认命名空间,这不是我想要的:
<?xml version="1.0" encoding="UTF-8"?>
<animals xmlns="http://zoo.domain.org/schema/animals">
<animal xmlns="" id="1">
<elephant>
<name>Jumbo</name>
</elephant>
</animal>
</animals>
【问题讨论】: