附加CDATA部分

时间:2017-02-01 11:12:21

标签: xml vbscript

我必须在一些旧的VBScript中做一些工作,我需要在某些XML中添加CDATA部分,如果这看起来正确,有人可以告诉我,以及我将如何从CDATA部分提取文本。< / p>

Dim xmlobj
Set xmlobj = Server.CreateObject("MSXML2.DOMDocument.6.0")
p_conditon = Server.HtmlEncode(condition)
xmlobj.LoadXML "<CONDITION>" & condition & "</CONDITION>"
Set Condition_Node = xmlobj.SelectSingleNode("/node()")

以上是现有代码,我正在添加以下部分

Dim cdata
Set cdata = xmlobj.CreateCDATASection(REPLACE(condition, "&amp;&amp;", "&&"))
Condition_Node.AppendChild(cdata)

提取CONDITION的现有代码是这样的,但是我需要检查它是否有CDATA部分,如果是,则从中提取文本。

field.SelectSingleNode("CONDITION").text

1 个答案:

答案 0 :(得分:2)

要回答问题的第一部分,我会从here

中窃取代码
Dim oXML : Set oXML = CreateObject("Msxml2.DOMDocument")
Set oXML.documentElement = oXML.createElement("a")
Dim nd
Set nd = oXML.createElement("b")
nd.appendChild oXML.createTextNode("<>")
oXML.documentElement.appendChild nd
Set nd = oXML.createElement("c")
nd.appendChild oXML.createCDATASection("<>")
oXML.documentElement.appendChild nd

和 - 对于评论的第二部分 - 我追加:

WScript.Echo oXML.xml
Set nd = oXML.SelectSingleNode("/a/c").firstChild
WScript.Echo nd.nodeType, nd.text, nd.xml
Set nd = oXML.SelectSingleNode("/a/b").firstChild
WScript.Echo nd.nodeType, nd.text, nd.xml

输出:

<a><b>&lt;&gt;</b><c><![CDATA[<>]]></c></a>

4 <> <![CDATA[<>]]>
3 <> &lt;&gt;

请参阅docs

...
 interface Node {

  // NodeType
  const unsigned short      ELEMENT_NODE                   = 1;
  const unsigned short      ATTRIBUTE_NODE                 = 2;
  const unsigned short      TEXT_NODE                      = 3;
  const unsigned short      CDATA_SECTION_NODE             = 4;
  const unsigned short      ENTITY_REFERENCE_NODE          = 5;
... 

表示数字。