使用 JDOM 定义多个命名空间
Define multiple namespaces with JDOM
我发现 JDOM 是创建 xml 文件的不错选择,在我的例子中,我需要创建一个具有多个命名空间的文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:v="http://www.w3.org/2006/vcard/ns#">
<v:VCard rdf:about="164">
<v:fn />
</v:VCard>
</rdf:RDF>
但我不知道如何将第二个命名空间定义到根元素中。我得到的是:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<v:VCard xmlns:v="http://www.w3.org/2006/vcard/ns#" rdf:about="164">
<v:fn />
</v:VCard>
</rdf:RDF>
这是我的代码:
Namespace rdf = Namespace.getNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
Namespace v = Namespace.getNamespace("v", "http://www.w3.org/2006/vcard/ns#");
Element rootElement = new Element("RDF", rdf);
//rootElement.setAttribute("IdontWantoThis", "IdontWantoThis", v);
Element mainElement = new Element("VCard", v);
mainElement.setAttribute("about", "164", rdf);
Element element = new Element("fn", v);
mainElement.addContent(element);
rootElement.addContent(mainElement);
doc.addContent(rootElement);
如果我使用注释行,我会得到另一个不受欢迎的东西:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:v="http://www.w3.org/2006/vcard/ns#" v:IdontWantoThis="IdontWantoThis">
<v:VCard rdf:about="164">
<v:fn />
</v:VCard>
</rdf:RDF>
我知道 java 有一些特定于 RDF 的库,但我只想创建一个简单的 xml 文件,不想使用模型、本体等。
您可以在元素上声明名称空间,即使该元素并不立即需要它......
Element rootElement = new Element("RDF", rdf);
rootElement.addNamespaceDeclaration(v);
我发现 JDOM 是创建 xml 文件的不错选择,在我的例子中,我需要创建一个具有多个命名空间的文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:v="http://www.w3.org/2006/vcard/ns#">
<v:VCard rdf:about="164">
<v:fn />
</v:VCard>
</rdf:RDF>
但我不知道如何将第二个命名空间定义到根元素中。我得到的是:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<v:VCard xmlns:v="http://www.w3.org/2006/vcard/ns#" rdf:about="164">
<v:fn />
</v:VCard>
</rdf:RDF>
这是我的代码:
Namespace rdf = Namespace.getNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
Namespace v = Namespace.getNamespace("v", "http://www.w3.org/2006/vcard/ns#");
Element rootElement = new Element("RDF", rdf);
//rootElement.setAttribute("IdontWantoThis", "IdontWantoThis", v);
Element mainElement = new Element("VCard", v);
mainElement.setAttribute("about", "164", rdf);
Element element = new Element("fn", v);
mainElement.addContent(element);
rootElement.addContent(mainElement);
doc.addContent(rootElement);
如果我使用注释行,我会得到另一个不受欢迎的东西:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:v="http://www.w3.org/2006/vcard/ns#" v:IdontWantoThis="IdontWantoThis">
<v:VCard rdf:about="164">
<v:fn />
</v:VCard>
</rdf:RDF>
我知道 java 有一些特定于 RDF 的库,但我只想创建一个简单的 xml 文件,不想使用模型、本体等。
您可以在元素上声明名称空间,即使该元素并不立即需要它......
Element rootElement = new Element("RDF", rdf);
rootElement.addNamespaceDeclaration(v);