使用vbscript创建XML元素时如何避免xmlns属性?

时间:2014-11-05 09:30:24

标签: xml vbscript xml-namespaces xmldom

添加新元素时,我看到xmlns属性添加了空字符串。我怎么能避免这个?我看到的答案很少,但它们都是Java或.Net。仍然尝试过这些,但他们不起作用。我需要一个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)

输出:

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

1 个答案:

答案 0 :(得分:3)

正如this answer中针对类似问题所解释的那样,您可能会获得空xmlns属性,因为其中一个父元素是使用命名空间定义的,但您创建的新子元素没有命名空间。使用createNode代替createElement来创建与祖先节点具有相同名称空间的子元素。

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)