1

私は次のコードを持っています。

<cfoutput>
<cfxml variable="eating">
<catalog>
<results>10</results>
<food id="bk101">
<initials>BK</initials>
<keywords>Burger King, pie, hamburgers, fries, milkshakes</keywords>
</food>
<food id="bk102">
<initials>TB</initials>
<keywords>Taco Bell, tacos, churros, burrito, gorditas</keywords>
</food>
<food id="bk103">
<keywords>Pizza Hut, pizza, cheese, garlic bread</keywords>
</food>
<food id="bk104">
<initials>CFA</initials>
<keywords>Chick-Fil-A, chicken, chicken wrap, sauce, Bananas Pudding Milkshake</keywords>
</food>
<food id="bk105">
<initials>PE</initials>
<keywords>Panda Express, rice, egg rolls, general tso</keywords>
</food>
<food id="bk106">
<initials>SJ</initials>
<keywords>Sakura Japan, rice, spring rolls, bento</keywords>
</food>
<food id="bk107">
<keywords>Five Guys, fries, burgers, hot dogs</keywords>
</food>
<food id="bk108">
<initials>TN</initials>
<keywords>Tandoori Nights, biryani, chicken, egg rolls</keywords>
</food>
<food id="bk109">
<initials>HoK</initials>
<keywords>House of Kabob, rice, bread, beef kabaob, chicken kabob</keywords>
</food>
<food id="bk110">
<initials>BF</initials>
<keywords>Baja Fresh, quesadilla, soft taco, chili con queso</keywords>
</food>
</catalog>
</cfxml>


<cfset data = queryNew("id,initials,keywords","integer,varchar,varchar")>
<cfloop index="x" from="1" to="#eating.catalog.results.xmlText#">
<cfset queryAddRow(data)>
<cfset querySetCell(data,"id",x)>
<cfset querySetCell(data,"initials","#eating.catalog.food[x].initials#")>
<cfset querySetCell(data,"keywords","#eating.catalog.food[x].keywords#")>
</cfloop>
</cfoutput>

<cfoutput query="data">
#id# - <b>#initials#</b> #keywords#<br />
</cfoutput>

XMLフィードの要素3と7の初期タグが欠落していることに気付くでしょう。要素3および7のXMLにイニシャルタグを追加すると、コードは美しく機能します。ただし、これらが欠落しているため、CFLoopはエラーをスローします。

私がやりたいのは、結果から要素3(およびエラーを引き起こす他のすべてのエントリ)を省略し、エラーが表示されないようにして、アプリケーションの結果が次のように表示されるようにすることです。

1-BKバーガーキング、パイ、ハンバーガー、フライドポテト、ミルクセーキ

2-TBタコベル、タコス、チュロス、ブリトー、ゴルディータ

4-CFAチックフィレイ、チキン、チキンラップ、ソース、バナナプディングミルクセーキ

5-PEパンダエクスプレス、ご飯、エッグロール、左宗棠

6-SJサクラジャパン、ご飯、春巻き、お弁当

8-TNタンドリーナイト、ビリヤニ、チキン、エッグロール

9-HoK House of Kabob、米、パン、牛肉のケバブ、鶏肉のケバブ

10-BFバハフレッシュ、ケサディーヤ、ソフトタコス、チリコンケソ

上記のフィードは単純化された例です。実際のフィードには数百の要素が含まれています。そのことを念頭に置いて、エラーを発生させる要素を含めながら、エラーを発生させる要素を省略するにはどうすればよいですか?

4

1 に答える 1

4

マイク、簡単なテストを実行するために、すべてのコードをローカルスクリプトにコピーしました。CFLOOPコードに1つのマイナーな編集を加え、エラーなしで出力を取得しようとしていました(structKeyExistsでキーが存在することを確認するために、構造体を評価する条件を追加しました)。

<cfloop index="x" from="1" to="#eating.catalog.results.xmlText#">
    <cfif structKeyExists(eating.catalog.food[x],"initials")>
        <cfset queryAddRow(data)>
        <cfset querySetCell(data,"id",x)>
        <cfset querySetCell(data,"initials", eating.catalog.food[x].initials )>
        <cfset querySetCell(data,"keywords", eating.catalog.food[x].keywords )>
    </cfif>
</cfloop>

ブラウザで受け取った出力は次のとおりです。

1-BKバーガーキング、パイ、ハンバーガー、フライドポテト、ミルクセーキ

2-TBタコベル、タコス、チュロス、ブリトー、ゴルディータ

4-CFAチックフィレイ、チキン、チキンラップ、ソース、バナナプディングミルクセーキ

5-PEパンダエクスプレス、ご飯、エッグロール、左宗棠

6-SJサクラジャパン、ご飯、春巻き、お弁当

8-TNタンドリーナイト、ビリヤニ、チキン、エッグロール

9-HoK House of Kabob、米、パン、牛肉のケバブ、鶏肉のケバブ

10-BFバハフレッシュ、ケサディーヤ、ソフトタコス、チリコンケソ

于 2012-04-25T19:01:02.623 に答える