我在使用一个函数将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文件时,这是一个常见的问题。
提前感谢您的任何帮助。
t.BaseLineColor
时得到了什么吗?我很好奇为什么生成的错误包含XML版本头文本。writeDump(t.BaseLineColor);
- Miguel-FtoString(t.BaseLineColor)
,您会发现它是一个XML字符串,而不是数字255。您需要获取节点的文本值,这是一个简单的值。请尝试使用t.xmlText
代替。 - SOSt.BaseLineColor.xmlText
。 - SOS