4

たとえば、次のコード スニペットを検討してください。

シナリオ 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 = Amazon, Inc はたまたま Scenario にあり、Google, Inc はそれ以外の場合です。

私の質問:

これらのデータを会社名に基づいてデータベースに挿入し、会社名が Amazon,Inc の場合は整数フィールドを 1 に設定し、それ以外の場合はゼロに設定する必要があります。

私が正しい道をたどっているかどうか教えてください:

会社名に基づいて 2 つの cfquery を作成することを考えているため、次の条件を配置することを考えています。

<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

最初の単語の後にスペースが含まれているため、等号と比較している会社名が実際に比較されるかどうか疑問に思っています (たとえば、Amazon と Inc の間のスペースなど)。

あなたの経験を共有してください。

ありがとう

これが私がしたことです:

特定の要素にもトリム機能を適用しました。例えば:

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私の出力として得ています。比較が間違っていたら教えてください。

4

2 に答える 2

0

トリム機能は、XML フラグメント全体に対してのみ機能します。あなたはしたい:

<cfset arrCOMPANY = trim(XmlSearch(
         XMLResponse,
         "//*[name()='Company']"
         )) />

あなたの多くが考慮したいと言った

a) データベースに文字列から整数への変換を行わせる、
または
b) 抽出された文字列全体を保存する、
または
c) XML フラグメント全体を保存する

于 2013-10-29T13:49:54.770 に答える