2

我正在尝试将查询输出到一个简单的 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)。” 任何帮助,将不胜感激。

4

1 回答 1

2

它在 a 上呕吐似乎有点奇怪0x1E,它只是一个大于符号。(编辑:不,不是;不知道我为什么得出这个结论。AC)。

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

另一件事:如果您对这个 XML 所做的只是将其序列化并将其写入文件,那么<cfxml>无论如何您实际上都不需要使用。还是继续使用<cfsavecontent>吧。如果你想要一个字符串:只需创建一个字符串。

于 2013-06-25T17:02:15.870 回答