提问人:Melonendk 提问时间:11/16/2023 更新时间:11/16/2023 访问量:42
MSXML 将默认的空 xmlns 添加到所有元素
MSXML adds default empty xmlns to all elements
问:
我需要从特定的 xsd 架构创建一个 XML,并使用 VBA 访问 MSXML2 库。到目前为止,我可以创建所有内容,但问题是 MSXML2 在根目录之后的字段上创建默认 xmlns,即使我指定了它。
我想要实现的目标:
<auditfile xmlns="urn:StandardAuditFile-Taxation-CashRegister:DK">
<header>
</header>
<company>
</company>
</auditfile>
我得到什么:
<auditfile xmlns="urn:StandardAuditFile-Taxation-CashRegister:DK">
<header xmlns="">
</header>
<company xmlns="">
</company>
</auditfile>
我有一个验证器,我可以检查一切正常,但是一旦xmlns=“”出现,我就说不。
我用于生成 xml 开头的代码是这样的。
Dim Document As Object
Set Document = CreateObject("MSXML2.DOMDocument.6.0")
Dim AuditRoot As Object
Set AuditRoot = Document.createElement("auditfile")
AuditRoot.setAttribute "xmlns", "urn:StandardAuditFile-Taxation-CashRegister:DK"
Document.appendChild AuditRoot
Set headerRoot = Document.createElement("header")
AuditRoot.appendChild headerRoot
Set companyRoot = Document.createElement("company")
AuditRoot.appendChild companyRoot
'Save the XML file
Document.Save "c:\Diamond\XML\SAT-T.xml"
'Set export to be c:\Diamond\XML\fil
MsgBox "File created at dafault location: C:\Diamond\XML\SAT-T.xml"
但如上所述,它不同。 那么,如果我可以禁用它,那么对一般有什么帮助吗?
答:
2赞
Yitzhak Khabinsky
11/16/2023
#1
最好使用 method 而不是 ..createNode()
.createElement()
它有 3 个参数,其中一个允许指定命名空间。
供参考:createNode 方法
我使用了 vbscript 语法,但您可以轻松地将其调整回 VBA。
VBScript
Dim Document
Set Document = CreateObject("MSXML2.DOMDocument.6.0")
Dim AuditRoot, NS
NS = "urn:StandardAuditFile-Taxation-CashRegister:DK"
Set AuditRoot = Document.createNode(1, "auditfile", NS)
Document.appendChild AuditRoot
Set headerRoot = Document.createNode(1, "header", NS)
AuditRoot.appendChild headerRoot
Set companyRoot = Document.createNode(1, "company", NS)
AuditRoot.appendChild companyRoot
'Save the XML file
Document.Save "c:\Diamond\XML\SAT-T.xml"
'Set export to be c:\Diamond\XML\fil
MsgBox "File created at dafault location: C:\Diamond\XML\SAT-T.xml"
输出
<auditfile xmlns="urn:StandardAuditFile-Taxation-CashRegister:DK">
<header/>
<company/>
</auditfile>
评论
0赞
Melonendk
11/17/2023
多谢!像魅力一样工作。效果更好,现在也可以实际使用验证器。
下一个:ComboBox 绑定数据
评论