gpt4 book ai didi

xml - 顶级 XML 标签属性 xmlns 被二级标签继承 - VBA

转载 作者:行者123 更新时间:2023-12-02 03:30:28 25 4
gpt4 key购买 nike

在下面的代码中,如果我删除 xmlns 部分并只允许将“版本”创建为工作列表根元素上的属性,则一切正常。但是,一旦我添加了 xmlns 属性,那么每个二级元素似乎都继承了 xmlns= "www.someURL.com/XMLSchema"的属性

如果我只有版本,一切都可以。如果我自己有 xmlns,或者两者都有(如下面的代码所示),我就会遇到问题。我在代码下方包含了两个 xml 片段,一个包含下面的代码,另一个删除了 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"/>

感谢阅读!

最佳答案

使用 createElementNS()/createAttributeNS() 方法,它们为特定命名空间创建节点。必要的命名空间定义将自动添加。

注意:如果使用前缀定义,XML 属性只能有命名空间。

关于xml - 顶级 XML 标签属性 xmlns 被二级标签继承 - VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27100080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com