我必须在一些旧的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, "&&", "&&"))
Condition_Node.AppendChild(cdata)
提取CONDITION的现有代码是这样的,但是我需要检查它是否有CDATA部分,如果是,则从中提取文本。
field.SelectSingleNode("CONDITION").text
答案 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><></b><c><![CDATA[<>]]></c></a>
4 <> <![CDATA[<>]]>
3 <> <>
请参阅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;
...
表示数字。