CPB*_*B07 2 xml coldfusion special-characters xml-parsing
我正在尝试将此 XML文件中的联盟列表导入到表中.
我能够找到我需要的元素,但联盟名称中有一个特殊/外来字符,然后它没有正确显示.
例如,在XML文件中有以下节点:
<trans-unit resname="global.leagueFull.2014.league1005">
<source>Colombia Finalización</source>
</trans-unit>
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的代码时,这个联盟的输出是哥伦比亚Finalización.
我的代码如下:
<cfscript>
xmlContent = xmlParse("http://www.easports.com/iframe/fut/bundles/futweb/web/flash/xml/localization/messages.en_GB.xml");
subSet = xmlSearch(xmlContent,'/xliff/file/body/trans-unit/');
</cfscript>
<cfloop from="1" to="#ArrayLen(subset)#" index="i">
<cfset resName = subSet[i].xmlAttributes.resName />
<cfif Find("global.leagueFull.2014.league",resName)>
<cfset leagueName = subSet[i].xmlChildren[1].xmlText />
<cfset leagueID = ListLast(resName,".") />
<cfset leagueID = Mid(leagueID,7,15) />
<cfoutput>#leagueName#<br /></cfoutput>
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
有谁知道可能导致这些角色丢失的原因,以及是否有办法防止或确实补救它?
谢谢
如果你看到类似的东西Finalización总是意味着UTF-8源被解释为遗留(即每个字符一个字节)编码.
恭喜,您刚刚在ColdFusion中发现了一个错误.(根据Adam Cameron在评论中的暗示,这是Bug#3183072,自CF 11起已修复)
尝试这种解决方法:
<cfhttp url="http://www.easports.com/iframe/fut/bundles/futweb/web/flash/xml/localization/messages.en_GB.xml">
<cfif ListFirst(cfhttp.statusCode, " ") eq "200">
<cfset xmlContent = XmlParse(cfhttp.FileContent)>
<cfset xPath = "/xliff/file/body/trans-unit[starts-with(@resname, 'global.leagueFull.2014.league')]">
<cfset subSet = XmlSearch(xmlContent, xPath)>
<cfloop array="#subSet#" index="transUnit">
<cfset leagueName = transUnit.source>
<cfset leagueID = Mid(ListLast(transUnit.XmlAttributes.resName, "."), 7, 15)>
<cfoutput>#HTMLEditFormat(leagueName)#<br></cfoutput>
</cfloop>
<cfelse>
Error fetching file. (<cfoutput>#cfhttp.StatusCode#</cfoutput>)
</cfif>
Run Code Online (Sandbox Code Playgroud)
请注意,我已经使用XPath starts-with()来替换你的<cfif>.这更有效率和简洁.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |