【发布时间】:2018-03-15 05:30:18
【问题描述】:
由于任何人在从 html 文件中解析并设置 <cfcase> 值中包含空格的值时遇到此问题吗?如果值包含空格,ColdFusion 无法在解析的 html 文件中找到匹配的数据。
例如:
<CFCASE value="LGT RAIN">
<CFSET application.condition="Lt Rain">
</CFCASE>`
html 文件的值是“LGT RAIN”,但由于其解析方式,它没有定义城市的状况。是否有解决方法,例如在运行 switch 语句之前检查条件?就像如果找到“LGT RAIN”然后将 cfset 值设置为“LGTRAIN”。
这是我正在解析的示例link。
https://forecast.weather.gov/product.php?site=CAE&issuedby=CAE&product=RWR&format=CI&version=1
<CFSET WeatherData = CFHTTP.FileContent>
代码:
<!--- Check For Condition with Two Word Phrase --------------->
<CFSET condition= #GetToken("#content#",#attributes.citystring# + 1, " ")#>
<br>
<CFSET city = #attributes.citystring#>
<CFIF (condition is "LGT")
or (condition is "HVY")
or (condition is "FRZ")
or (condition is "MIX")
or (condition is "NOT")>
<CFSET condition= (
#GetToken("#content#",#attributes.citystring# + 1, " ")#
& " " &
#GetToken("#content#",#attributes.citystring# + 2, " ")#
)>
<br>
<CFSET Temp = #GetToken("#content#",#attributes.citystring# + 3, " ")#>'
.......
【问题讨论】:
-
你确定字符是空格吗?它似乎在这里工作正常 - trycf.com/gist/906f90ab7aeed217e583e6ea6469b9c0/… 除非它确实是 ColdFusion 8 的问题。如果是这样,也许你可以用它作为升级到受支持版本的最后一根稻草。
-
你用什么代码来解析天气文件?我猜要么(就像 Miguel 说的那样)“LGT RAIN”中的空格并不是真正的空格字符,或者您的搜索文本有一个前导或尾随。能否提供更多示例代码?
-
@WSC27 是的,我已经看到了您之前发布的链接,但这并没有向我们展示您的代码“看到”的内容。如果您不提供更多详细信息,我们将无法帮助您。正如当前发布的那样,您共享的少量代码没有问题。所以我们只能假设是数据或者你的代码在解析数据。
-
@WSC27 - 故障排除的一个重要步骤是学习如何创建short but complete programs。当您遇到这样的问题时,首先创建一个 standalone 示例,其中包含重现问题所需的 smallest 代码量。这样做的过程通常可以帮助您自己找出问题所在。但是,即使没有,您现在也有一个完整的示例,其他人可以在他们自己的机器上进行测试,并且.. 其他人越容易测试您的代码,您得到答案的速度就越快。跨度>
-
另外,我相信这是XY Problem。
标签: coldfusion html-parsing case coldfusion-8