Xml 为什么属性也附加到子节点?

Xml 为什么属性也附加到子节点?,xml,vbscript,attributes,Xml,Vbscript,Attributes,我想创建一个如下所示的XML文件,但问题是通过将属性添加到startMethod中,它也会附加到子节点globalSettings 代码: 生成SOAP请求 设置objSOAPXML=CreateObject(“MSXML2.DOMDocument.4.0”) objSOAPXML.async=False '创建根元素:Web服务 设置objWebService=objSOAPXML.CreateElement(“startMethod”) objWebService.setAttribute“

我想创建一个如下所示的XML文件,但问题是通过将属性添加到
startMethod
中,它也会附加到子节点
globalSettings

代码:

生成SOAP请求 设置objSOAPXML=CreateObject(“MSXML2.DOMDocument.4.0”) objSOAPXML.async=False '创建根元素:Web服务 设置objWebService=objSOAPXML.CreateElement(“startMethod”) objWebService.setAttribute“xmlns”,xmlns objSOAPXML.documentElement.childNodes(0).appendChild objWebService '创建Web服务请求 设置objGlobalSettings=objSOAPXML.CreateElement(“globalSettings”) objWebService.appendChild objGlobalSettings 预期:


...
但结果是:


...

尽管名称空间声明具有属性的语法形式,但它们在语义上完全不同

通过在根元素上设置
xmlns=“startMethod”
,您表示希望在特定名称空间中使用该元素。您没有说过希望子元素位于名称空间中,因此它不在名称空间中;由于它不在名称空间中,因此必须使用
xmlns=“”
对其进行序列化,以取消父元素上的名称空间声明


如果希望所有元素都位于同一名称空间中,则应在此名称空间中创建它们。

是的,太好了!为我工作!非常感谢。很高兴它起作用了。StackOverflow的惯例是,您不需要说谢谢,但您应该通过单击答案旁边的勾选/复选标记将答案标记为已接受。