【发布时间】:2014-11-24 07:49:21
【问题描述】:
在下面的代码中,如果我删除了 xmlns 部分并且只允许在 Worklist 的根元素上创建“版本”作为属性,那么一切正常。但是,一旦我添加了 xmlns 属性,那么每个二级元素似乎都会继承 xmlns= "www.someURL.com/XMLSchema"
的属性如果我只有版本,一切都好。如果我自己有 xmlns,或者我有两个(如下代码所示),我就会遇到问题。我在代码下面包含了两个 xml sn-ps,一个包含下面的代码,另一个删除了 xmlns 代码。
我可以通过不将其包含在 XML 创建中来捏造它,并在创建整个 xml 文档后将其作为字符串添加,但我想了解如何防止这种情况(因为使用生成的 XML 的程序如果 xmlns 不是 Worklist 上的属性,则会中断,但如果 xmlns 是任何其他标签上的属性,也会中断。
我还阅读了一些与 XML 命名空间的使用以及它们如何影响属性相关的其他 Stack Overflow 帖子(和其他资源),我理解,但在这种情况下,我需要能够将这个单一属性添加到仅限工作清单元素。
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"/>
感谢阅读!
【问题讨论】: