【问题标题】:How to add xml and xml-stylesheet nodes to an XML file in VBA?如何将 xml 和 xml-stylesheet 节点添加到 VBA 中的 XML 文件?
【发布时间】:2022-01-27 00:01:43
【问题描述】:

我正在使用 Access VBA 创建 XML 文件。

Dim dDokument As MSXML2.DOMDocument60
Set dDokument = New MSXML2.DOMDocument60

Dim environmentalDataNode As IXMLDOMElement
Set environmentalDataNode = dDokument.createElement("mainnode")

'...Adding some stuff

Call dDokument.save("c:\Temp\test.xml") 

这写了一个很好的 XML 文件,除了我的 XML 的开头必须有这两行。

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://secure.umweltbundesamt.at/h2o/xml/uba_schnittstellen.xslt"?>

当我使用上面的代码时,它们不是写的。

那么,如何将 XML 和 xml-stylesheet 节点添加到我的 DOMDocument60 中?

【问题讨论】:

标签: xml vba ms-access xslt


【解决方案1】:

&lt;?xml-stylesheet type="text/xsl" href="https://secure.umweltbundesamt.at/h2o/xml/uba_schnittstellen.xslt"?&gt; 是您可以创建的处理指令,例如Set pi = dDokument.createProcessingInstruction("xml-stylesheet", "type=""text/xsl"" href=""https://secure.umweltbundesamt.at/h2o/xml/uba_schnittstellen.xslt""")(我希望我有正确的 VB 语法来转义双引号和赋值),然后插入例如dDokument.insertBefore(pi, dDocument.documentElement).

您展示的第一项是 XML 声明。它通常不是使用 DOM 方法作为节点创建的,而是在文档树的序列化/保存期间添加的,就像 save 方法所做的那样。最后使用save() 是否添加了 XML 声明(默认编码为 UTF-8)?

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms755439(v=vs.85) 建议 XML 声明虽然在技术上不是处理指令,但在 MSXML API 的上下文中,仍然可以使用 Set dec = dDocument.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""") 创建(当然也可以使用 dDocument.insertBefore(dec, dDocument.firstChild) 插入)。

【讨论】:

  • 效果很好。保存时未添加 xml 声明。也许有一种更简单的方法来添加它,但在那之前我会使用你的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多