2

When adding a new element I see the xmlns attribute getting added with empty string. How can I avoid this? I have seen few answers but they are either in Java or .Net. Still tried those but they don't work. I need a solution for VBScript.

'load the xml file
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")  
objXMLDoc.load(strFilePath)

'get all <MainError> nodes in the xml
Set mainNode = objXMLDoc.documentElement.SelectNodes("//MainError")

'get child nodes for the first <MainError> node
Set childNodes = mainNode(0).ChildNodes

Set objErrorNode = objXMLDoc.createElement("ChildError")
objErrorNode.text = "somevalue"
mainNode(0).appendChild(objErrorNode)

Output:

<MainError><ChildError xmlns="">somevalue</ChildError></MainError>

1 Answer 1

5

As explained in this answer to a similar question you probably get the empty xmlns attribute because one of the parent elements is defined with a namespace, but you create the new child element without a namespace. Use createNode instead of createElement to create the child element with the same namespace as the ancestor node.

ns = "..."  '<-- define namespace string here according to whatever
            '    namespace is defined in your XML

Set objErrorNode = objXMLDoc.createNode(1, "ChildError", ns)
objErrorNode.text = "somevalue"
mainNode(0).appendChild(objErrorNode)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.