顶级XML标记属性xmlns被二级标记继承-VBA
在下面的代码中,如果我删除xmlns部分,只允许在Worklist的根元素上创建“version”作为属性,那么一切都正常。但是,只要添加xmlns属性,第二级元素就会继承xmlns=“www.someURL.com/XMLSchema”属性 如果我只有版本,一切都可以。如果我自己有xmlns,或者两者都有(如下面的代码所示),我就会遇到问题。我在代码下面包含了两个xml片段,一个包含下面的代码,另一个删除了xmlns代码 我可以通过不将其包含在XML创建中并在创建整个XML文档后将其作为字符串添加来避免这种情况,但我想了解如何防止这种情况发生(因为如果xmlns不是工作列表上的属性,则使用结果XML的程序会中断,如果xmlns是任何其他标记上的属性,则程序也会中断) 我还阅读了一些与XML名称空间的使用以及它们如何影响属性相关的其他堆栈溢出文章(和其他参考资料),我理解这些内容,但在本例中,我只需要能够将此单个属性添加到Worklist元素中顶级XML标记属性xmlns被二级标记继承-VBA,xml,vba,excel,Xml,Vba,Excel,在下面的代码中,如果我删除xmlns部分,只允许在Worklist的根元素上创建“version”作为属性,那么一切都正常。但是,只要添加xmlns属性,第二级元素就会继承xmlns=“www.someURL.com/XMLSchema”属性 如果我只有版本,一切都可以。如果我自己有xmlns,或者两者都有(如下面的代码所示),我就会遇到问题。我在代码下面包含了两个xml片段,一个包含下面的代码,另一个删除了xmlns代码 我可以通过不将其包含在XML创建中并在创建整个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"/>
谢谢你的阅读 使用
createElementNS()
/createAttributeNS()
方法,它们为特定命名空间创建节点。将自动添加必要的命名空间定义
注意:如果使用前缀定义,则XML属性只能具有名称空间