【问题标题】:An invalid XML character (Unicode: 0x1e) in Coldfusion XML outputColdfusion XML 输出中的无效 XML 字符 (Unicode: 0x1e)
【发布时间】:2013-06-25 16:14:12
【问题描述】:

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

【问题讨论】:

    标签: coldfusion coldfusion-8


    【解决方案1】:

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

    暂时将&lt;cfxml&gt; 换成&lt;cfsavecontent&gt; 可能是个不错的主意,这样您就可以构建字符串,然后对其进行解析以找出其中不正确的地方。这应该会给你更多的线索来解决它。但是xmlFormat() 应该可以处理任性的尖括号。

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

    【讨论】:

    • 我最终按照 Adam 的建议转储了内容,并通过 XML 验证器运行了它。问题是由隐藏的 Unicode: 0x1e 字符引起的。我不得不在我的文本编辑器中打开查看隐藏字符删除有问题的字符,然后将所有代码复制并粘贴到一个新文件中。感谢亚当的帮助。
    • NP [等等...所以我的回复足够长,可以发帖]
    • 据我所知 0x1e 不是大于符号而是不可打印的控制字符?
    • 正确。不知道为什么我决定它是一个>。将更新。
    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 2013-09-10
    • 2011-09-05
    • 1970-01-01
    • 2012-11-24
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多