在 ColdFusion 中创建 XML 个文本节点

Create XML text nodes in ColdFusion

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

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

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

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

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

xmlNodes 数组有据可查:The XML document object

据我所知,无法在 ColdFusion 中创建新文本节点。但是你总是可以在文档中找到一个现有的文本节点复制它,替换它的xmlValue和将其插入任何 xmlNodes 数组。

您始终可以使用 <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>

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

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

将产生:

那当然是基于标签的。