在下面的代码中,如果我删除xmlns部分并且只允许"版本"要在Worklist的根元素上创建一个属性,一切都很好。但是,只要我添加xmlns属性,那么每个第二级元素似乎都会继承xmlns =" www.someURL.com/XMLSchema"
的属性如果我只有版本,一切都好。如果我有自己的xmlns,或者如果我有两个(如下面的代码所示),我就会遇到问题。我在代码下面包含了两个xml代码段,一个包含下面的代码,另一个包含xmlns代码。
我可以通过不在XML创建中包含它来捏造它,并在创建整个xml文档后将其添加为字符串,但我想了解如何防止这种情况(因为使用该程序的程序)如果xmlns不是Worklist上的属性,则结果XML会中断,但如果xmlns是任何其他标记上的属性,它也会中断。)
我还阅读了一些与XML命名空间的使用相关的其他Stack Overflow帖子(和其他资源)以及它们如何影响属性,我理解但在这个例子中我需要能够添加这个单一的属性仅限于Worklist元素。
Dim xmlDoc As MSXML2.DOMDocument60
Set xmlDoc = New MSXML2.DOMDocument60
Dim Attribute1 As IXMLDOMAttribute, Element1 As IXMLDOMElement
Set RootNode = xmlDoc.createElement("Worklist")
Set Attribute1 = xmlDoc.createAttribute("xmlns")
Attribute1.value = "www.someURL.com/XMLSchema"
RootNode.setAttributeNode Attribute1
Set Attribute1 = Nothing
Set Attribute1 = xmlDoc.createAttribute("version")
Attribute1.value = "1.0"
RootNode.setAttributeNode Attribute1
Set Attribute1 = Nothing
XML代码段
<Worklist xmlns="www.someURL.com/XMLSchema" version="1.0">
<Options xmlns="" allow="false" delete="false" rename="false"/>
<Templates xmlns="">
</Templates>
<Sequence xmlns="" name="aName"/>
<Worklist version="1.0">
<Options allow="false" delete="false" rename="false"/>
<Templates>
</Templates>
<Sequence name="aName"/>
感谢阅读!
答案 0 :(得分:0)
使用createElementNS()
/ createAttributeNS()
方法,它们为特定命名空间创建节点。必要的命名空间定义将自动添加。
注意:如果使用前缀定义,XML属性只能具有命名空间。