0
var xml = '<books><book><id>1</id></book></books>';
var xmlDoc = $.parseXML(xml);
$(xmlDoc).find("book").each(function(){
  alert($(this));
});

私が見たいのは:

<book><id>1</id></book>

IE では、$(this)[0].xml を使用できます。しかし、Chrome には xml プロパティがありません。じゃあどうすればいいの?

ありがとう。

4

2 に答える 2

3

最も簡単な方法は、ブラウザーの組み込みXMLSerializer実装を使用することです (IE 9 を含むすべての主要なブラウザーの現在のバージョンに存在します)。

function serializeXmlNode(xmlNode) {
    if (typeof window.XMLSerializer != "undefined") {
        return new window.XMLSerializer().serializeToString(xmlNode);
    } else if (typeof xmlNode.xml != "undefined") {
        return xmlNode.xml;
    }
    return "";
}

var xml = '<books><book><id>1</id></book></books>';
var xmlDoc = $.parseXML(xml);
$(xmlDoc).find("book").each(function(){
    alert( serializeXmlNode(this) );
});

参考文献:

于 2012-11-02T10:49:06.393 に答える
0

(要素内の要素1のテキスト)を見たい場合は、使用しますidbook

alert($(this).find('id').text());

実例 | ソース

(あなたのフォーマットは質問を完全に変えます-そもそも正しくフォーマットすることの重要性です!)

更新

これを取得する唯一の方法 (独自の DOM-to-XML シリアライザーを作成する以外) (いいえ、別の、おそらくより良い方法があります)は、別の要素でラップして使用することhtmlです。

alert($("<x>").append(this).html()); // <== Probably dangerous

...しかし、それは要素を元のドキュメントの外に移動します。したがって、クローンを作成することでそれを回避できます。

alert($("<x>").append(this.cloneNode(true)).html());

実例| ソース

于 2012-11-02T09:49:13.257 に答える