我正在尝试将查询输出到简单的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)。”任何帮助将不胜感激。
答案 0 :(得分:2)
看起来有点奇怪它在(编辑:不,不是;不知道为什么我来到那里结论.AC)。0x1E
上bar,这只是一个大于符号。
暂时替换<cfxml>
for <cfsavecontent>
可能是一个想法,这样你就可以构建字符串,然后解析它以找出它的不正确之处。这应该给你更多线索如何解决它。但是xmlFormat()
应该处理任性的角括号。
另一件事:如果您正在使用此XML进行序列化并将其写入文件,那么无论如何您实际上不需要使用<cfxml>
。无论如何,继续使用<cfsavecontent>
。如果你想要一个字符串:只需要创建一个字符串。