在元素上设置命名空间属性

5
我将尝试在Java中创建一个包含以下元素的XML文档:
<project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2" 
         xmlns:acme="http://www.acme.com/schemas"
         color="blue">

我知道如何创建Node项目。我也知道如何使用element.setAttribute("color", "blue")设置颜色属性。

我是否可以使用setAttribute()方法来设置xmlns和xmlns:acme属性,还是因为它们是命名空间属性,需要以某种特殊的方式进行设置?


有几种编程模型的示例: https://dev59.com/2XRB5IYBdhLWcg3wvpmc - user1574506
5个回答

12

我相信你需要使用:

element.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:acme", "http://www.acme.com/schemas");

1

我认为以下代码不能解决问题!

myDocument.createElementNS("http://www.imsglobal.org/xsd/ims_qtiasiv1p2","project");

这将使用DOM创建以下元素:
<http://www.imsglobal.org/xsd/ims_qtiasiv1p2:project>

所以这不会向元素添加命名空间属性。因此,使用DOM,我们可以做类似于:
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>

另请参见@Jokster的答案:

https://dev59.com/3Gkv5IYBdhLWcg3wdQhT

- vlakov

1

0

在创建元素时,您可以简单地指定命名空间。例如:

myDocument.createElementNS("http://www.imsglobal.org/xsd/ims_qtiasiv1p2","project");

然后Java的DOM库将为您处理命名空间声明。

0

在2019年,对我有效的唯一方法是使用attr()方法:

Element element = doc.createElement("project");
element.attr("xmlns","http://www.imsglobal.org/xsd/ims_qtiasiv1p2");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接