在ColdFusion中创建XML文本节点

时间:2016-09-27 17:17:12

标签: xml coldfusion coldfusion-10

在ColdFusion的XML DOM抽象中,有一个创建元素的函数,您可以通过属性设置元素的文本内容。但我无法看到如何创建这样的代码段:

<a>some<b>text</b>here</a>

我希望创建包含字符串的文本节点,但我不知道如何创建文本节点。这似乎并不是工厂的功能。这可能是使用纯ColdFusion,还是我需要使用Java?

3 个答案:

答案 0 :(得分:1)

XML文档对象实际上使用文本节点,但不会在转储中显示它。试试这个:

a = xmlParse("<a>some<b>text</b>here</a>");
writeDump(a.xmlRoot.xmlNodes);

writeDump(a.xmlRoot.xmlNodes)

xmlNodes 数组已有详细记录:The XML document object

AFAIK无法在ColdFusion中创建新文本节点。但您始终可以在文档中找到现有文本节点重复,替换 xmlValue 并将其插入任何 xmlNodes < / strong> array。

答案 1 :(得分:0)

您始终可以使用<cfsavecontent>标记来完全控制XML结构。它允许你做这样的事情:

<cfset somevariable = "some dynamic value">

<cfsavecontent variable="myXML">
    <cfoutput>
        <?xml version='1.0' encoding='UTF-8'?>
        <a>some<b>text</b>here</a>
        <c>#somevariable#</c>
    </cfoutput>
</cfsavecontent>

<cfdump var="#myXML#">

然后您的XML结构存储在myXML变量中。

Documentation for the cfsavecontent tag

cfscript中,它看起来像这样:

<cfscript>
    somevariable = "some dynamic value";

    savecontent variable="myXML" { WriteOutput("<?xml version='1.0' encoding='UTF-8'?><a>some<b>text</b>here</a><c>#somevariable#</c>"); }
    writeDump(myXML);
</cfscript>

答案 2 :(得分:0)

这是我能得到的最接近的,要求XML而不是数组。

<cfxml variable="xmlapiData">
    <a b="text">some here</a>
</cfxml>
<cfdump var="#xmlapiData#">

将产生:

enter image description here

这当然是基于标签的。