如何解决如何在 ColdFusion 中将 XML 数组文本项转换为数字?
我在使用函数将 XML 数据转换为适当的数据类型时遇到问题。
我已经使用 XmlParse() 读入了一个 XML 文件。
其中有一个我循环的数组。 <cfloop array=#i.Task# index="t">
我的理解是这个数组中的项目是 XML 文本。我可以用 CFoutput 显示所有项目没问题。数组 (BaseLineColor) 中的一项是颜色。 #t.BaseLineColor#
但是这个颜色值是一个不同长度的十进制整数。我已经计算出将这个十进制数转换为 R、G、B 十进制值的数学方法。到目前为止一切都很好。
问题是,如果我在 BaseLineColor 上尝试数学函数,那么我得到:
值 ?xml version="1.0" encoding="UTF-8"? BaseLineColor 255 /BaseLineColor 不能转换为数字。
好吧,我尝试了几种方法来尝试将 BaseLineColor 转换为整数,但没有任何效果。 Val() 不起作用。事实上,我似乎无法将其转换为任何数据类型。 例如,这是我试图将其设为字符串 - 同样的错误:
<cfscript>
Strbaselinecolor=toString(t.BaseLineColor);
rdec=floor(Strbaselinecolor / 65536);
gdec=floor((Srtbaselinecolor - rdec * 65536)/256);
bdec=floor(Strbaselinecolor - rdec * 65536 - gdec * 256);
writeOutput("#t.baselinecolor#: #Strbaselinecolor# red #rdec#,green #gdec#,blue #bdec#")
</cfscript>
我应该使用什么功能?在将其中一些值称为整数之前,我是否应该以某种方式对 XML 进行预处理?
XML 数据中有很多值是数字(一些整数和一些浮点数),因此不仅仅是这些是颜色的项目,而是使用任何非颜色的 XML 数据的更普遍的问题文本。我试图找到一些关于此的参考资料,但到目前为止还没有找到任何相关的内容。但我猜这是读取 XML 文件时的常见问题。
在此先感谢您的帮助。
解决方法
错误信息是正确的。代码正在尝试对不是数字的东西执行数学运算,尽管事实上它可能看起来在浏览器中是一个......你可能会被浏览器处理标签的方式绊倒基于 xml 的代码。
此代码(错误地)将 t.BaseLineColor
的值显示为简单数字 255
<cfscript>
t = xmlParse('<?xml version="1.0" encoding="UTF-8"?><BaseLineColor>255</BaseLineColor>');
writeOutput(t.BaseLineColor);
</cfscript>
然而,使用浏览器的“检查元素”工具,显示该值实际上是一个 xml 字符串。由于浏览器将 <
和 >
中包含的任何内容视为 html 标签,这些标签不会被呈现,因此屏幕上只能看到数字 255
。
writeDump() 在这里更有帮助。它将 t.BaseLineColor
显示为一个 xml 节点,它的值可以通过 xmlText
属性访问。
这个简单的值可以用于数学运算。
<cfscript>
t = xmlParse('<?xml version="1.0" encoding="UTF-8"?><BaseLineColor>255</BaseLineColor>');
result = t.BaseLineColor.xmlText / 65536 ;
writeOutput( result );
</cfscript>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。