AJAX で、getElementsByTagName で DOM にアクセスする

参考
ttp://perltips.twinkle.cc/ajax/dom_getelementsbytagname.php
<books>
    <book>
        <title>初めての AJAX</title>
        <author>AJAX 編集部</author>
        <publisher>AJAX 社</publisher>
    </book>
    <book>
        <title>初めての Perl</title>
        <author>Perl 編集部</author>
        <publisher>Perl 出版</publisher>
    </book>
    <book>
        <title>初めての PHP</title>
        <author>PHP 編集部</author>
        <publisher>PHP 工房</publisher>
    </book>
</book>

最終的に値を取り出したいわけだが、childNodes.item(0) = childNodes[0] = firstChild は同じ意味であることを知っておくとよいと思う。

function parse(xml) {

  if(xml) {

    if(xml.documentElement) { // for IE
      var books = xml.documentElement.getElementsByTagName('book');
      for (var i = 0; i < books.length; i++) {

        // 以下の各行はすべて同じ意味。
        // childNodes.item(0) = childNodes[0] = firstChild は同じ意味。
        // childNode[0] と firstChild はのどちらを使ってもよい。

        // 方法 1
        var title =
          tags.item(i).getElementsByTagName('title').item(0).childNodes.item(0).nodeValue;

        // 方法 2
//      var title =
//        tags[i].getElementsByTagName('title')[0].childNodes[0].nodeValue;

        // 方法 3
//      var title =
//        tags[i].getElementsByTagName('title')[0].firstChild.nodeValue;

        // 方法 4
        // あとは方法1〜3を参考に組み合わせてみてください。

      } // End of for
    }
  }
}

上のコードと下のコードは同じ。上は book から攻める。下は title からよりダイレクトに攻める。

function parse(xml) {

  if(xml) {

    if(xml.documentElement) { // for IE
      var titles = xml.documentElement.getElementsByTagName('title');
      for (var i = 0; i < titles.length; i++) {

        // 方法 1
        var name = tags.item(0).firstChild.nodeValue;

        // 方法 2
//      var name = tags[i].childNodes[0].nodeValue;

        // 方法 3
//      var name = tags[i].firstChild.nodeValue;

        // 方法 4
        // あとは方法1〜3を参考に組み合わせてみてください。

      } // End of for
    }
  }
}