例如,请考虑以下代码段: 场景1: 我作为SOAP响应的一部分收到的公司名称如下: CompanyAmazon, Inc /Company 场景2: 我作为SOAP响应的一部分收到的另一个公司名称如下: CompanyGoogle, Inc /Co
场景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.如果我比较错误,请告诉我.
<cfset CompanyName = Trim(arrCompany[1])>
如果你cfdump该变量,或将其包装在xmlFormat()中,你会看到它包含整个节点,而不仅仅是文本.仅使用cfoutput时很容易错过,因为浏览器会将xml视为标记,因此除非您查看源代码,否则它们不可见:
<cfoutput>#XMLFormat(CompanyName)#</cfoutput>
要仅获取节点文本,请使用xmlText属性,然后修剪它:
<cfset CompanyName = trim( arrCompany[1].xmlText )>
编辑:另外,如评论中所述,您不需要单独的查询来设置位标志.只需根据公司名称将CF变量设置为1或0,然后在查询中使用它.