在下面的代码中,如果我删除xmlns部分并且只允许将“版本”创建为Worklist的根元素上的属性,那么一切都可以。然而,只要我添加xmlns属性,那么每个第二级元素似乎都继承了属性xmlns =“www.someURL.com/XMLSchema”由第二级标记继承的顶级XML标记属性xmlns - VBA
如果我只有版本,一切正常。如果我自己拥有xmlns,或者如果我拥有这两个xmlns(如下面的代码),我会遇到问题。我在代码下面包含了两个xml代码片段,一个代码如下,另一个代码去掉了xmlns代码。
我可以通过在XML创建中不包含它来添加它,并在创建完整个xml文档后将其添加为字符串,但我想了解如何防止这种情况(因为使用结果的程序如果xmlns不是Worklist上的属性,则XML会中断,但如果xmlns是任何其他标记上的属性,它也会中断。
我也读过一些与使用XML命名空间有关的其他堆栈溢出帖子(和其他资源)以及它们如何影响属性,我理解,但在这种情况下,我需要能够将此单一属性添加到仅工作列表元素。
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"/>
感谢您的阅读!