0

私はここで非常に単純なタスクを実行しようとしています。jQueryを使用してXML文字列を変更し、変更された文字列を元に戻します。

以前は、.html()関数を使用してこれを行うことができたと思いますが、XMLドキュメントの解析で機能性がなくなったと思います。

だから、ここにコードがあります:

var tempXML = "<node1><node2>Content #1</node2></node1>";
var parsedXML = $.parseXML(tempXML);
$(parsedXML).find('node2').text('XXXXXX');
alert($(parsedXML).find('node2').text());  // That works, it will display XXXXXX

さて、私が推測するように、tempXML変数は変更されていません。

では、「XXXXXX」と表示されるXMLコードを取得するにはどうすればよいですか?

$(parsedXML).text();を呼び出します。XXXXXXのみを返し、オブジェクトに対して.html()が定義されていません...

4

1 に答える 1

1

それはトリックですが、ここにあります:

var tempXML = "<node1><node2>Content #1</node2></node1>";
var parsedXML = $.parseXML(tempXML);
$(parsedXML).find('node2').text('XXXXXX');

alert($("<div>").append($(parsedXML).find('node2')).html());​

編集:または、ここに、私が思うに、より信頼できる解決策があります:

function XMLToString(oXML) {   
    if (window.ActiveXObject) {     
        return oXML.xml;   
    } else {     
        return (new XMLSerializer()).serializeToString(oXML);   
    } 
}
var tempXML = "<node1><node2>Content #1</node2></node1>";
var parsedXML = $.parseXML(tempXML);
$(parsedXML).find('node2').text('XXXXXX');
alert(XMLToString($(parsedXML).find('node2')[0]));

jsFiddle

于 2012-09-04T21:57:34.543 に答える