我正在进行 XML 创建的各种工作。一个这样的缩减示例是:
<cfxml variable="xmlDoc">
<cfoutput>
<?xml version='1.0' encoding='utf-8' ?>
<event id="#iEventId#">
<relatedevents>
<cfloop query="qPreviousEvents">
<cfif eventid IS NOT iEventId>
<event id="#eventid#" sameyear="<cfif DateFormat(startdate, " yyyy ") EQ DateFormat(cfcObject.GetStartDate(), "yyyy ")>1<cfelse>0</cfif>">
<title>#XmlFormat(Title)#</title>
<tag>#LCase(ReReplaceNoCase(ReReplaceNoCase(tagname, " ", "-", "all"), "[^a-z0-9_-]", "", "all"))#</tag>
</event>
</cfif>
</cfloop>
</relatedevents>
</event>
</cfoutput>
</cfxml>
<cfreturn xmlDoc>
我的问题是如何缩小生成的 XML?目前 CF 所在位置有空行,每个节点有一行。理想情况下,我希望它能被缩小,这样它就只在一行上,标签之间没有空格。
我可以在某个地方进行替换吗?或者有一个我可以使用的功能吗?
谢谢
最佳答案
与其将缩进放入然后再将其取出,也许最好一开始就不要将其放入。
这样做的一个合理权宜之计(如果稍微不优雅)的方法可能是抑制输出,除非您规定它,例如:
<cfsetting enablecfoutputonly="true">
<cfxml variable="x">
<cfoutput><aaa></cfoutput>
<cfoutput><bbb/></cfoutput>
<cfoutput><ccc ddd="eee">fff<ggg /></ccc></cfoutput>
<cfoutput></aaa></cfoutput>
</cfxml>
<pre>
<cfoutput>#encodeForHtml(toString(x))#</cfoutput> <!--- <?xml version="1.0" encoding="UTF-8"?> <aaa><bbb/><ccc ddd="eee">fff<ggg/></ccc></aaa> ---->
</pre>
关于ColdFusion:缩小 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26527575/