我是JDOM的新手,在创建文档时遇到了问题。问题是我想要的 能够添加没有“xmlns”属性的元素。我正在使用JDOM 1.1
我找到的所有示例都显示输出没有“xmlns”。这是一个简单的 代码片段及其输出:
Namespace jwNS = Namespace.getNamespace("http://www.javaworld.com");
Element myElement = new Element("article", jwNS);
Document doc = new Document(myElement);
myElement.addContent(new Element("title").setText("Blah, blah, blah"));
// serialize with two space indents and extra line breaks
try {
//XMLOutputter serializer = new XMLOutputter(" ", true);
XMLOutputter serializer = new XMLOutputter(Format.getPrettyFormat());
serializer.output(doc, System.out);
}
catch (IOException e) {
System.err.println(e);
}
输出:
<?xml version="1.0" encoding="UTF-8"?>
<article xmlns="http://www.javaworld.com">
<title xmlns="">Blah, blah, blah</title>
</article>
我想要的只是
<?xml version="1.0" encoding="UTF-8"?>
<article xmlns="http://www.javaworld.com">
<title>Blah, blah, blah</title>
</article>
谁能告诉我我做错了什么?
答案 0 :(得分:4)
给出你想要的例子:
<?xml version="1.0" encoding="UTF-8"?>
<article xmlns="http://www.javaworld.com">
<title>Blah, blah, blah</title>
</article>
这意味着<article>
的所有子元素都具有与<article>
相同的名称空间,即名称空间从父项继承到子项。这意味着您需要为所有子元素指定jwNS
,即
myElement.addContent(new Element("title", jwNS ).setText("Blah, blah, blah"));
在呈现XML输出时,JDOM应该省略<title>
中的显式命名空间,因为它从<article>
继承它。
只使用new Element("title")
,你说你不希望<title>
上有任何名称空间,因此JDOm必须添加一个显式xnmns=""
属性才能覆盖继承来自jwNS
父级的<article>
命名空间。
答案 1 :(得分:0)
尝试使用以下方法创建元素:
Element myElement = new Element("article");
而不是
Element myElement = new Element("article", jwNS);