Coldfusion XML输出中的无效XML字符(Unicode:0x1e)

时间:2013-06-25 16:14:12

标签: coldfusion coldfusion-8

我正在尝试将查询输出到简单的XML文档。我已经多次使用相同的代码进行其他查询,并且工作正常。似乎某个地方的描述字段中存在一个错误的字符,而XMLformat()并没有将其过滤掉。我尝试了很多REReplace()过滤器无济于事。还尝试了Ben Nadel的技术。 http://www.bennadel.com/blog/1155-Cleaning-High-Ascii-Values-For-Web-Safeness-In-ColdFusion.htm并且一切都导致了同样的错误。我确实转储输出并搜索坏字符,但我什么都没发现。这个简单的事情变成了一个谜。我正在使用下面的代码。

<cfquery name="list" datasource="theDatasource">
SELECT ItemID, ItemCode, BrandName, description
FROM theTable
</cfquery>

<cfxml variable="outputXML">
<itemsBrand>
    <cfoutput query="list">
    <itemBrand>
        <ItemID>#XmlFormat(ItemID)#</ItemID>
        <ItemCode>#XmlFormat(ItemCode)#</ItemCode>
        <BrandName>#XmlFormat(BrandName)#</BrandName>
        <description>#XmlFormat(description)#</description>
    </itemBrand>
    </cfoutput>
</itemsBrand>
</cfxml>

<cffile action="write" file="#GetDirectoryFromPath(GetCurrentTemplatePath())#itemBrand.xml" output="#toString(outputXML)#"/>

导致错误“在文档的元素内容中找到了无效的XML字符(Unicode:0x1e)。”任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

看起来有点奇怪它在0x1E上bar,这只是一个大于符号。(编辑:不,不是;不知道为什么我来到那里结论.AC)。

暂时替换<cfxml> for <cfsavecontent>可能是一个想法,这样你就可以构建字符串,然后解析它以找出它的不正确之处。这应该给你更多线索如何解决它。但是xmlFormat()应该处理任性的角括号。

另一件事:如果您正在使用此XML进行序列化并将其写入文件,那么无论如何您实际上不需要使用<cfxml>。无论如何,继续使用<cfsavecontent>。如果你想要一个字符串:只需要创建一个字符串。