jQueryでdc:titleのような : (コロン) があるXMLタグの中身を読む

  • 11
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

単純なのですが、ハマったので記事にしてみます。

jQueryでコロン付きのXMLエレメントが読めない

RSSなど、AJAX経由でXMLで読み出すことがあるかと思います。
その場合、たとえばこんなコード。

XML

<dc:title>タイトル</dc:title>

jQuery

$( xml ).find( 'dc:title' ).text();

これでは読み出せません。

解決策

こうすれば読めます。

jQuery

$( xml ).find( 'title, dc\\:title' ).text();

かんたんな説明

コロン付きのタグについて

XML名前空間に基づいたものです。
詳しくはこちらをお読みください。

jQueryではなぜ読めない?

コロンはjQueryではフィルタの役割を担っているため、そのままでは使えません。

FirefoxとIEの場合

バックスラッシュ2つでコロンをエスケープします。

jQuery

$( xml ).find( 'dc\\:title' ).text();

ChromeとSafariの場合

XML名前空間を使ったエレメントの場合、大域属性のほうを無視して読めるようです。

jQuery

$( xml ).find( 'title' ).text();

すべてのブラウザで読む場合

"," で区切ることで、OR検索します。解決策と同じです。

jQuery

$( xml ).find( 'title, dc\\:title' ).text();