xml – 在coldfusion中使用cfif
例如,请考虑以下代码段:
场景1: 我作为SOAP响应的一部分收到的公司名称如下: <Company>Amazon,Inc </Company> 场景2: 我作为SOAP响应的一部分收到的另一个公司名称如下: <Company>Google,Inc </Company> 基本上,从用户端我输入一些信息,并根据我在< Company>内获得不同的公司名称.标签. 以下代码显示了我如何将响应存储在XMLResponse变量中 <cfset XMLResponse = XmlParse( httpResponse.fileContent.Trim() ) /> 下面的代码显示了我如何解析响应并将内容存储在变量中: <cfset arrCOMPANY = XmlSearch( XMLResponse,"//*[name()='Company']" ) /> 所以现在我有arrCOMPANY =亚马逊,Inc恰好是在Scenario和Google,Inc. 我的问题: 我必须根据公司名称将这些数据插入到数据库中,如果公司名称是Amazon,Inc,则将整数字段设置为等于1 如果我遵循正确的道路,请告诉我: 我正在考虑根据公司名称编写两个cfqueries,因此我想考虑以下条件: <cfif arrCompany eq "Amazon,Inc"> // Here I will write cfquery with an integer field = 1 Or <cfif arrCompany eq "Google,Inc"> // Here I will write cfquery with integer field 0 所以,我正在进行正确的比较,我想知道我将与eq标志进行比较的公司名称是否会实际比较或不作为 请分享您的经验. 谢谢 这是我做的: 我也在特定元素上应用了trim功能.例如: CompanyName变量中的值是Amazon,Inc <cfset CompanyName = Trim(arrCompany[1])> // adding index 1 because it's a complex structure 以下是我尝试使用cfif条件的方法: <cfif CompanyName eq "Amazon,Inc"> <cfset m = 1> <cfelse> <cfset m = 0> </cfif> <cfoutput>#m#</cfoutput> 尽管如上所述,我的输出为0.如果我比较错误,请告诉我. 解决方法
如果你cfdump该变量,或将其包装在xmlFormat()中,你会看到它包含整个节点,而不仅仅是文本.仅使用cfoutput时很容易错过,因为浏览器会将xml视为标记,因此除非您查看源代码,否则它们不可见: <cfoutput>#XMLFormat(CompanyName)#</cfoutput> 要仅获取节点文本,请使用xmlText属性,然后修剪它: <cfset CompanyName = trim( arrCompany[1].xmlText )> 编辑:另外,如评论中所述,您不需要单独的查询来设置位标志.只需根据公司名称将CF变量设置为1或0,然后在查询中使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |