【发布时间】:2021-07-14 06:39:41
【问题描述】:
我在使用函数将 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); -
这些错误可能是因为您试图在一个复杂对象的 xml 节点上执行数学函数。 WriteDump
toString(t.BaseLineColor)你会看到它是一个 xml 字符串——而不是数字 255。你想要节点的文本,这是一个简单的值。请改用t.xmlText。 -
更正:改用
t.BaseLineColor.xmlText -
我有疑问有一个 XML 数据的例子。
标签: arrays xml coldfusion