如何在 Excel vba 中创建 CDATA 标签



任何人都可以帮忙吗?

我正在尝试将 excel 数据转换为 xml 文件 uisng vba。 我的 xml 文件看起来像这样,

 <product>
  <info><i>Samsung</i></info>
 </product>

我希望 html 标签不会 parsed.so 尝试在 vba 中使用 createCDATASection 方法在 vba 中添加 cdata

我像这样添加了 vba 代码

  Set objDom = New DOMDocument
  Set objXMLRootelement = objDom.createElement("Product")
  Set objXMLelement = objDom.createElement("info")
  objXMLRootelement.appendChild objXMLelement
  cdata=objDom.createCDATASection ("<i>Samsung</i>")
  objXMLelement.text=cdata.text

我希望我的 xml 文件看起来像这样,并且在记事本中查看视图源代码时,它应该
将"<"显示为"<",而不是"与号和 LT;"

  <product>
    <info><![CDATA[<i>Samsung</i>]]></info>
  </product>

执行我的代码后,它显示如下,

  <product>
   <info><i>Samsung</i></info>
  </product>

但是 CDATA 标签没有出现。不知道原因。当查看记事本"<"符号中的xml文件的视图源时,显示为与号lt;

任何人都可以解决这个问题吗?

提前致谢

试试这个

Sub zx()
    Dim objDom As DOMDocument
    Dim objXMLRootelement As IXMLDOMElement
    Dim objXMLelement As IXMLDOMElement
    Dim cdata As IXMLDOMCDATASection
    Set objDom = New DOMDocument
    Set objXMLRootelement = objDom.createElement("Product")
    objDom.appendChild objXMLRootelement
    Set objXMLelement = objDom.createElement("info")
    objXMLRootelement.appendChild objXMLelement
    Set cdata = objDom.createCDATASection("info")
    cdata.Data = "<i>Samsung</i>"
    objXMLelement.appendChild cdata
    Debug.Print objDom.XML
End Sub

这个例子有点多余。它将数据设置两次。初始化器中的第一个:

Set cdata = objDom.createCDATASection("info")

这实际上是创建 cdata 对象同时将"info"写入数据。更忠实于原始海报的问题将是:

Set cdata = objDom.createCDATASection("<i>Samsung</i>")

此外,如果这样更方便,也可以使用对象的数据属性:

cdata.Data = "<i>Samsung</i>"

两者都不正确,但没有必要对数据属性进行两次设置。

最新更新