スペースを含むCFCase値が見つかりません

As anyone had this issue with parsing from html file with setting values that contain spaces in the value? If the value contains spaces ColdFusion isn't able to find the data match in the parsed html file.

例えば:



`

htmlファイルの値は "LGT RAIN"ですが、その解析方法のために都市の状態が定義されていません。 switchステートメントを実行する前に条件を確認するなどの回避策はありますか? "LGT RAIN"が見つかった場合と同様に、cfset valueに "LGTRAIN"を設定します。

Here is sample link that I am parsing from.

https://forecast.weather.gov/product.php?site=CAE&issuedby=CAE&product=RWR&format=CI&version=1


コード:

<!--- Check For Condition with Two Word Phrase ---------------> 
 
  
1
ru de
@ WSC27はい私はあなたが以前に投稿したリンクを見ましたが、それはあなたのコードが「見る」ものを私たちに示していません。あなたがこれ以上の詳細を提供しないならば、我々はあなたを助けることができません。現在投稿されているように、あなたが共有したほんの少しのコードに関して問題はありません。そのため、データを解析しているのはデータまたはあなたのコードだけであると想定できます。
追加された 著者 Miguel-F,
@ WSC27はい私はあなたが以前に投稿したリンクを見ましたが、それはあなたのコードが「見る」ものを私たちに示していません。あなたがこれ以上の詳細を提供しないならば、我々はあなたを助けることができません。現在投稿されているように、あなたが共有したほんの少しのコードに関して問題はありません。そのため、データを解析しているのはデータまたはあなたのコードだけであると想定できます。
追加された 著者 Miguel-F,
@ WSC27は、コメントとしてではなく、編集の元の質問にこれらの詳細を追加します。それらはそのように読みやすく、より多くの詳細を含むことができます。そして私が言うことができるから、あなたはまだデータの実際の例を提供していません。私たちはあなたのコードが大丈夫に見えるように内容が何であるかを見る必要があります(少なくともあなたが含めた部分)。
追加された 著者 Miguel-F,
@ WSC27は、コメントとしてではなく、編集の元の質問にこれらの詳細を追加します。それらはそのように読みやすく、より多くの詳細を含むことができます。そして私が言うことができるから、あなたはまだデータの実際の例を提供していません。私たちはあなたのコードが大丈夫に見えるように内容が何であるかを見る必要があります(少なくともあなたが含めた部分)。
追加された 著者 Miguel-F,
@ Miguel-Fが言ったことに加えて、「値」の各文字をダンプすることから始めます。本当に期待しているものかどうかを確認してください。 ;
追加された 著者 Ageax,
...そして「完全な」例は、変数値をハードコーディングすることを意味します。たとえば、 のようになります。さもなければ私達はあなたが見ている結果を再現することができないでしょう、そしてそれは助けることを非常に難しくします。
追加された 著者 Ageax,
...そして「完全な」例は、変数値をハードコーディングすることを意味します。たとえば、 のようになります。さもなければ私達はあなたが見ている結果を再現することができないでしょう、そしてそれは助けることを非常に難しくします。
追加された 著者 Ageax,
@ WSC27 - トラブルシューティングの重要なステップは、短くて完成したプログラムを作成する方法を学ぶことです。このような問題に遭遇したら、問題を再現するのに必要な 最小のコードでスタンドアロンの例を作成することから始めてください。そうすることのプロセスは頻繁にあなた自身で問題を把握するのを助けます。しかし、そうでなくても、他の誰かが自分のマシンでテストできるという完全な例があります。他の誰かが自分のコードをテストするのが簡単であればあるほど、より早く回答が得られます。
追加された 著者 Ageax,
@ WSC27 - トラブルシューティングの重要なステップは、短くて完成したプログラムを作成する方法を学ぶことです。このような問題に遭遇したら、問題を再現するのに必要な 最小のコードでスタンドアロンの例を作成することから始めてください。そうすることのプロセスは頻繁にあなた自身で問題を把握するのを助けます。しかし、そうでなくても、他の誰かが自分のマシンでテストできるという完全な例があります。他の誰かが自分のコードをテストするのが簡単であればあるほど、より早く回答が得られます。
追加された 著者 Ageax,
また、これは XY問題であると考えています。
追加された 著者 Shawn,
また、これは XY問題であると考えています。
追加された 著者 Shawn,
application スコープを使用することについての私の主張は、それがどこにあるのかを知ることができないほど多くはありませんでしたが、なぜ application スコープを使用するのかという疑問です。同時に2つのリクエストが入ってきた場合、その変数はリークします。
追加された 著者 Shawn,
application スコープを使用することについての私の主張は、それがどこにあるのかを知ることができないほど多くはありませんでしたが、なぜ application スコープを使用するのかという疑問です。同時に2つのリクエストが入ってきた場合、その変数はリークします。
追加された 著者 Shawn,
また、そのリンクはあなたに対処しなければならないためにあなたに非常に軽いペイロードを与えるテキストのみのバージョンを持っています。それはあなたがとにかく必要ない余分なHTMLの大部分を取り除きます。そうは言っても、テキストはまだ
 タグの中にあるので、必要なものだけを取得するには、このページをどのように解析しているかに関するデータを提供する必要があります。
追加された 著者 Shawn,
また、そのリンクはあなたに対処しなければならないためにあなたに非常に軽いペイロードを与えるテキストのみのバージョンを持っています。それはあなたがとにかく必要ない余分なHTMLの大部分を取り除きます。そうは言っても、テキストはまだ
 タグの中にあるので、必要なものだけを取得するには、このページをどのように解析しているかに関するデータを提供する必要があります。
追加された 著者 Shawn,
これはスペース区切りのテキストファイルから来たのではないでしょうか。あなたはここであなた自身のためにより多くの仕事をしているかもしれません。また、 application スコープで条件を設定しますか?
追加された 著者 Shawn,
これはスペース区切りのテキストファイルから来たのではないでしょうか。あなたはここであなた自身のためにより多くの仕事をしているかもしれません。また、 application スコープで条件を設定しますか?
追加された 著者 Shawn,
天気ファイルを解析するためにどのコードを使用していますか?私は(ミゲルが言ったように)「LGT RAIN」のスペースは実際にはスペース文字ではないか、あるいはあなたの検索テキストの先頭または末尾に1文字があると思います。もっとサンプルコードを提供できますか。
追加された 著者 Shawn,
天気ファイルを解析するためにどのコードを使用していますか?私は(ミゲルが言ったように)「LGT RAIN」のスペースは実際にはスペース文字ではないか、あるいはあなたの検索テキストの先頭または末尾に1文字があると思います。もっとサンプルコードを提供できますか。
追加された 著者 Shawn,
@Shawn HTMLファイルから解析されています。条件は適用範囲内に設定されています。その部分のコードを含めなかっただけです。
追加された 著者 WSC27,
@Shawn HTMLファイルから解析されています。条件は適用範囲内に設定されています。その部分のコードを含めなかっただけです。
追加された 著者 WSC27,
@ Miguel-FデータURLの例を見るには上のShawnの投稿の中の「リンク」をクリックしてください。
追加された 著者 WSC27,
@ Miguel-FデータURLの例を見るには上のShawnの投稿の中の「リンク」をクリックしてください。
追加された 著者 WSC27,
@Shawn '<�!--- 2語句で条件をチェック---------------> (条件は "NOT")>
追加された 著者 WSC27,
@Shawn '<�!--- 2語句で条件をチェック---------------> (条件は "NOT")>
追加された 著者 WSC27,
@Shawnこれは私がパースしているサンプルリンクです。 リンク '
追加された 著者 WSC27,
@Shawnこれは私がパースしているサンプルリンクです。 リンク '
追加された 著者 WSC27,

4 答え

あなたが最終的にあなたが得る天気に対して何をしようとしているかについての多くの不足している文脈があるので、私は天気ブロックを分析する方法に関していくつかの仮定をしました。

実際のブロックを取得するには、実際にページを解析する必要がありますが、一度実行すると、以下の私の提案を使用してこれらの天気要素を分割することができます。私は getToken()の呼び出しを取り除きました。なぜならそれはあなたが必要としていたよりも多くの仕事をしていたと思い、そして本質的にスペースの問題を引き起こしたからです。私のコードはまだ私が意図したよりもはるかに言葉遣いですが、私は私がCF8以上のものを使用していなかったことを確認しようとしました。私はすべてうまくいくはずだと思いますが、テストするCF8サーバーはありません。

https://trycf.com/gist/1993243eb476a629ec25f8c6e8ddffthe// >

私が行ったように私はコード内にいくつかのメモを含めました。

<!--- Create a block of the parsed weather. --->
ANDERSON       FAIR      49  16  26 W12G20    30.01F
LIBERTY        FAIR      49  14  24 W12G21    29.99F
SPARTANBURG    FAIR      45   9  23 NW12G21   30.00F
CLEMSON        FAIR      48  10  21 NW13G22   30.02F
GREENVILLE     FAIR      48  13  24 VRB3      29.99F
GREENWOOD      FAIR      49  13  23 W10G21    30.03F
GREER          FAIR      48   9  20 VRB7      29.99F
ROCK HILL      FAIR      46  17  31 NW10G22   29.99F
CHESTER        FAIR      45  12  26 W12G17    30.01F
LAURENS        FAIR      48  16  27 NW12G18   30.01F


 <!--- end of line character (this may change if your feed uses other eol)--->


<!--- Make weather an array of strings for each city. --->
 

私の提案は、さまざまな要素を構造体に入れて、それからそれを処理することです。都市天気1行= Struct 1行

以下の私のコードは、あなたがHTMLから65文字の固定幅レコードの行を解析していると仮定しています。

<!--- Loop through the new weather array and make a new array of parsed weather. --->
<!--- Create initial weather array for output. --->
 

    <!--- NOTE: Yay go CF8s implicit struct creation! --->
    
    <!--- ArrayAppend() returns true/false, so this variable isn't used. --->
    



今、あなたはすべての都市の配列を持っていて、あなたが必要とする都市のために個々の部分を引き出すことができます。

What's the weather like in Liberty? 
City >> #newWXArray[whichRow].CITY#
Sky >> #newWXArray[whichRow].SKY#
Temp >> #newWXArray[whichRow].TMP#
DewPoint >> #newWXArray[whichRow].DP#
Relative Humidity >> #newWXArray[whichRow].RH#
Wind >> #newWXArray[whichRow].WIND#
Pressure >> #newWXArray[whichRow].PRES#
Remarks >> #newWXArray[whichRow].RMKS#

Final Note:

私はCF8がどれだけ限られているか忘れていました。現在のバージョンのACFやLuceeにアップグレードすることができれば、これをもっと簡単にするためにできることはたくさんあります。

Also, as I suggested, changing your link to pull the Text-Only version (

https://forecast.weather.gov/product.php?site=CAE&issuedby=CAE&product=RWR&format=txt&version=1&glossary=1) will significantly reduce the amount of text you have to parse through.

2
追加された
WSC27 - はい、最初の問題以降で可能な限りアップグレードを行います公式APIで問題を起こすのは、おそらくCF8で使用されている古いjvmに関連しています。 @Shawn - CF8が暗黙の配列/構造体をサポートしていたことさえ覚えていませんでした!元のドキュメントは見つかりませんでしたが、このブログ CF8のListToArrayは multicharacterdelim パラメータをサポートしていないと言います。
追加された 著者 Ageax,
やあ!繰り返しになりますが、私はCF8の頭痛のせいで、当然のことと思われることがいくつかあることを忘れていました。私がCF4.0の日に書いた初期のコードのいくつかを見て、今考えたのはなぜですか?......そうそう。
追加された 著者 Shawn,

あなたが最終的にあなたが得る天気に対して何をしようとしているかについての多くの不足している文脈があるので、私は天気ブロックを分析する方法に関していくつかの仮定をしました。

実際のブロックを取得するには、実際にページを解析する必要がありますが、一度実行すると、以下の私の提案を使用してこれらの天気要素を分割することができます。私は getToken()の呼び出しを取り除きました。なぜならそれはあなたが必要としていたよりも多くの仕事をしていたと思い、そして本質的にスペースの問題を引き起こしたからです。私のコードはまだ私が意図したよりもはるかに言葉遣いですが、私は私がCF8以上のものを使用していなかったことを確認しようとしました。私はすべてうまくいくはずだと思いますが、テストするCF8サーバーはありません。

https://trycf.com/gist/1993243eb476a629ec25f8c6e8ddffthe// >

私が行ったように私はコード内にいくつかのメモを含めました。

<!--- Create a block of the parsed weather. --->
ANDERSON       FAIR      49  16  26 W12G20    30.01F
LIBERTY        FAIR      49  14  24 W12G21    29.99F
SPARTANBURG    FAIR      45   9  23 NW12G21   30.00F
CLEMSON        FAIR      48  10  21 NW13G22   30.02F
GREENVILLE     FAIR      48  13  24 VRB3      29.99F
GREENWOOD      FAIR      49  13  23 W10G21    30.03F
GREER          FAIR      48   9  20 VRB7      29.99F
ROCK HILL      FAIR      46  17  31 NW10G22   29.99F
CHESTER        FAIR      45  12  26 W12G17    30.01F
LAURENS        FAIR      48  16  27 NW12G18   30.01F


 <!--- end of line character (this may change if your feed uses other eol)--->


<!--- Make weather an array of strings for each city. --->
 

私の提案は、さまざまな要素を構造体に入れて、それからそれを処理することです。都市天気1行= Struct 1行

以下の私のコードは、あなたがHTMLから65文字の固定幅レコードの行を解析していると仮定しています。

<!--- Loop through the new weather array and make a new array of parsed weather. --->
<!--- Create initial weather array for output. --->
 

    <!--- NOTE: Yay go CF8s implicit struct creation! --->
    
    <!--- ArrayAppend() returns true/false, so this variable isn't used. --->
    



今、あなたはすべての都市の配列を持っていて、あなたが必要とする都市のために個々の部分を引き出すことができます。

What's the weather like in Liberty? 
City >> #newWXArray[whichRow].CITY#
Sky >> #newWXArray[whichRow].SKY#
Temp >> #newWXArray[whichRow].TMP#
DewPoint >> #newWXArray[whichRow].DP#
Relative Humidity >> #newWXArray[whichRow].RH#
Wind >> #newWXArray[whichRow].WIND#
Pressure >> #newWXArray[whichRow].PRES#
Remarks >> #newWXArray[whichRow].RMKS#

Final Note:

私はCF8がどれだけ限られているか忘れていました。現在のバージョンのACFやLuceeにアップグレードすることができれば、これをもっと簡単にするためにできることはたくさんあります。

Also, as I suggested, changing your link to pull the Text-Only version (

https://forecast.weather.gov/product.php?site=CAE&issuedby=CAE&product=RWR&format=txt&version=1&glossary=1) will significantly reduce the amount of text you have to parse through.

2
追加された
WSC27 - はい、最初の問題以降で可能な限りアップグレードを行います公式APIで問題を起こすのは、おそらくCF8で使用されている古いjvmに関連しています。 @Shawn - CF8が暗黙の配列/構造体をサポートしていたことさえ覚えていませんでした!元のドキュメントは見つかりませんでしたが、このブログ CF8のListToArrayは multicharacterdelim パラメータをサポートしていないと言います。
追加された 著者 Ageax,
やあ!繰り返しになりますが、私はCF8の頭痛のせいで、当然のことと思われることがいくつかあることを忘れていました。私がCF4.0の日に書いた初期のコードのいくつかを見て、今考えたのはなぜですか?......そうそう。
追加された 著者 Shawn,

テキストデータ内の空白を使って条件付きロジックをめちゃくちゃにした経験は、末尾のスペースを使ったものですが、原則は同じです。疑問があるときはあなたのデータを見てください。これは簡単な例です:

MyVar = 'Lgt  Rain'; //two spaces between the words
if (MyVar == 'Lgt Rain'){//one space between words
applicable code
}
else {
writeoutput(replace(MyVar, ' ', '-space-', 'all'));
}
1
追加された

テキストデータ内の空白を使って条件付きロジックをめちゃくちゃにした経験は、末尾のスペースを使ったものですが、原則は同じです。疑問があるときはあなたのデータを見てください。これは簡単な例です:

MyVar = 'Lgt  Rain'; //two spaces between the words
if (MyVar == 'Lgt Rain'){//one space between words
applicable code
}
else {
writeoutput(replace(MyVar, ' ', '-space-', 'all'));
}
1
追加された