名前空間付きの要素にアクセスする

かつて、こんな投稿を公開している。

$(xml).find('ksjc\\:PrefCd').each(function(){

確かに、この方法はFirefoxでは正しい対処方法です。
全く未確認のまま公開したものではありません。

でも、Chromeでは未確認でした。
今日、これがChromeでは全く動かないことが分かりました。
今朝4時からず~っと悩み続けました。

結論
名前空間付き要素へのアクセス方法がブラウザ毎に異なる
Qiitaに、この違いが記載されています。

上記の例の場合は、次の通り書き換えます。

$(xml).find('ksjc\\:PrefCd, PrefCd').each(function(){

これで、FirefoxでもChromeでも動くようになります。
なお、find(‘ksjc\\:PrefCd, PrefCd’)は、‘ksjc\\:PrefCd’ または ‘PrefCd’ の意です。

<gml:Point gml:id="p1">
  <gml:pos>35.60733100 140.10638000</gml:pos>
</gml:Point>

この様な、xmlの属性 gml:id にアクセスする場合は

$(xml).find("Point").each(function(){
  gid = ($(this).attr("gml:id");

名前空間(gml)が必要ですので注意が要ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This blog is kept spam free by WP-SpamFree.