Java 在元素上设置命名空间属性
我正在尝试用Java创建一个包含以下元素的XML文档:Java 在元素上设置命名空间属性,java,xml,xml-namespaces,setattribute,Java,Xml,Xml Namespaces,Setattribute,我正在尝试用Java创建一个包含以下元素的XML文档: <project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2" xmlns:acme="http://www.acme.com/schemas" color="blue"> 我知道如何创建项目节点。我还知道如何使用设置颜色属性 element.setAttribute(“颜色”, “蓝色”) 我是使用setAttribute()
<project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2"
xmlns:acme="http://www.acme.com/schemas"
color="blue">
我知道如何创建项目节点。我还知道如何使用设置颜色属性
element.setAttribute(“颜色”,
“蓝色”)
我是使用setAttribute()以相同的方式设置xmlns和xmlns:acme属性,还是以某种特殊的方式设置,因为它们是命名空间属性?我认为您必须使用:
element.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:acme", "http://www.acme.com/schemas");
您可以在创建元素时简单地指定名称空间。例如:
myDocument.createElementNS("http://www.imsglobal.org/xsd/ims_qtiasiv1p2","project");
然后java DOM库将为您处理名称空间声明。我认为下面的代码不会解决这个问题
myDocument.createElementNS("http://www.imsglobal.org/xsd/ims_qtiasiv1p2","project");
这将创建一个如下所示的元素(使用DOM)
因此,它将设置第一个属性,如下所示,您可以用相同的方式设置多个属性
<project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2>
在2019年,唯一对我有效的方法是使用attr()方法:
简单的回答是:您不需要自己创建xmlns属性。JavaXML类库自动创建这些类。默认情况下,它将自动创建名称空间映射,并根据某些内部算法选择前缀。
如果您不喜欢Java XML序列化程序指定的默认前缀,可以通过创建自己的名称空间解析器来控制它们,如本文所述:
有几种编程模型的示例:另请参见@Jokster的答案:——---
Element request = doc.createElement("project");
Attr attr = doc.createAttribute("xmlns");
attr.setValue("http://www.imsglobal.org/xsd/ims_qtiasiv1p2");
request.setAttributeNode(attr);
<project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2>
Element element = doc.createElement("project");
element.attr("xmlns","http://www.imsglobal.org/xsd/ims_qtiasiv1p2");