Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting Namespace Attributes on an Element

I'm trying to create an XML document in Java that contains the following Element:

<project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2" 
         xmlns:acme="http://www.acme.com/schemas"
         color="blue">

I know how to create the project Node. I also know how to set the color attribute using

element.setAttribute("color", "blue")

Do I set the xmlns and xmlns:acme attributes the same way using setAttribute() or do I do it in some special way since they are namespace attributes?

like image 438
Paul Reiners Avatar asked Dec 09 '22 22:12

Paul Reiners


2 Answers

I believe that you have to use:

element.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:acme", "http://www.acme.com/schemas");
like image 148
davidfmatheson Avatar answered Dec 28 '22 12:12

davidfmatheson


I do not think below code will serve the question!

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

This will create an element as below (using DOM)

<http://www.imsglobal.org/xsd/ims_qtiasiv1p2:project>

So this will not add an namespace attribute to an element. So using DOM we can do something like

Element request = doc.createElement("project");

Attr attr = doc.createAttribute("xmlns");
attr.setValue("http://www.imsglobal.org/xsd/ims_qtiasiv1p2");

request.setAttributeNode(attr);

So it will set the first attribute like below, you can set multiple attributes in the same way

<project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2>
like image 33
Harsha Avatar answered Dec 28 '22 13:12

Harsha