我在使用函数将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转换成整数,但是没有任何效果。瓦尔()不工作。事实上,我似乎无法将其转换为任何数据类型。例如,这里我试图使它成为一个字符串-相同的错误:
<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文件时这是一个常见的问题。
提前感谢您的帮助。
发布于 2021-07-18 23:29:06
错误信息是正确的。这段代码试图对一些不是数字的东西执行数学运算,尽管它看起来可能是浏览器中的一个.浏览器处理基于标记的代码(如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>
https://stackoverflow.com/questions/68373209
复制相似问题