dynamically generating XML prob

natkhatbandar

Usenet Archive
Joined
Dec 29, 2004
Messages
1
Reaction score
0
Hi,
I am generating an XML document dynamically using DOM.
I am creating an element using IXMLDOMDocument::createElement and then calling IXMLDOMElement::appendChild for the parent element. For attributes, I use IXMLDOMDocument2::createAttribute and then
IXMLDOMElement::setAttributeNode.

My problem is that for each of the elements, an additional "xmlns" attribute is added with no value (xmlns=""). How can I avoid getting this extra attribute from being inserted? Note that I am not putting a prefix for the element names.

--- Sample XML generated-----------------
<MyRoot xmlns="http://www.xyz.com/abc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xyz.com/abc abc.xsd"> <MyElement1 xmlns="" attrib1="v1"/> .. ..
</MyRoot>
 

Martin Honnen

Usenet Archive
Joined
Apr 8, 2000
Messages
6,174
Reaction score
0
I am generating an XML document dynamically using DOM.
I am creating an element using IXMLDOMDocument::createElement and then calling IXMLDOMElement::appendChild for the parent element. For attributes, I use IXMLDOMDocument2::createAttribute and then
IXMLDOMElement::setAttributeNode.

My problem is that for each of the elements, an additional "xmlns" attribute is added with no value (xmlns=""). How can I avoid getting this extra attribute from being inserted?

Sounds as if you are using MSXML, with MSXML you should use createNode(1, 'element-name', 'namespaceURI') if you want to create elements in a namespace. If you use createElement('element-name') then the element is created in the null namespace and thus when the document is serialized the <element-name xmlns=""> needs to be added to properly serialize the document.

So you want (JScript syntax)
var rootElement = xmlDocument.createNode(
1,
'MyRoot',
'http://www.xyz.com/abc'
);
var myElement = xmlDocument.createNode(
1,
'MyElement1',
'http://www.xyz.com/abc'
);

If you are not using MSXML but a W3C DOM Level 2 compliant implementation then you need to use var rootElement = xmlDocument.createElementNS( 'http://www.xyz.com/abc', 'MyRoot' ); var myElement = xmlDocument.createElementNS( 'http://www.xyz.com/abc', 'MyElement1' );
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
548,208
Messages
3,104,798
Members
249,594
Latest member
henrywalsh

Latest Threads

Top