经典的asp create xml属性在第二个标签上重复

时间:2018-12-14 14:57:04

标签: xml asp-classic attributes xmldocument xml-documentation

使用下一个代码以经典的asp创建简单的xml文档:

dim xmlDoc: set xmlDoc = server.createobject("Microsoft.XMLDOM")
dim objRoot,objRecord,objAttribute,objIntro,objChild
dim newFileName: newFileName = "testing"
strFolder = server.mappath("/")

set objRoot = xmlDoc.createElement("Document")
set objAttribute = xmlDoc.createAttribute("xmlns")
objAttribute.nodeValue = "urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"
objRoot.setAttributeNode(objAttribute)
xmlDoc.appendChild objRoot

set objRecord = xmlDoc.createElement("Level1-1")
objRoot.appendChild objRecord

set objRecord = xmlDoc.createElement("Level1-2")
objRoot.appendChild objRecord

set objRecord = xmlDoc.createElement("Level1-3")
set objChild = xmlDoc.createElement("Level1-3-1")
objChild.text = "Level1-3-1"
objRecord.appendChild objChild

objRoot.appendChild objRecord

Set objIntro = xmlDoc.createProcessingInstruction("xml","version='1.0' encoding='UTF-8'")  
xmlDoc.insertBefore objIntro,xmlDoc.childNodes(0)  
xmlDoc.save (strFolder & "\userdata\file\" & newFileName & ".xml")
response.write "<a href=""/userdata/file/" & newFileName & ".xml"" target=""_blank"">Open XML</a>"
set xmlDoc = nothing

这给出了下一个结果:

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02">
    <Level1-1 xmlns=""/>
    <Level1-2 xmlns=""/>
    <Level1-3 xmlns="">
        <Level1-3-1>Level1-3-1</Level1-3-1>
    </Level1-3>
</Document>

如您所见,在根元素上创建的属性在第二级的每个标签中都重复出现。尽管它不是在代码中创建的。在第三层(1-3-1级)没有属性。

有人知道为什么会这样吗?以及如何避免这种情况?

感谢沃尔特

1 个答案:

答案 0 :(得分:1)

您可以使用setAttribute Method将属性及其值添加到该特定元素。

objRoot.setAttribute "xmlns","urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"