0
var usrconf = "<root><node>abc</node><node>efg</node></root>";
var xmlDoc = $.parseXML( usrconf );
$(xmlDoc).find('node').each(function(i) {
    // change node values here
});

変更された XML を印刷するにはどうすればよいですか?

4

1 に答える 1

2

$(this) を使用すると、each() で選択されている要素にアクセスできます。iここで説明されている関数のインデックスです: http://api.jquery.com/each/

.each( function(index, Element) )

したがって、正しいコードは次のとおりです。

var usrconf = "<root><node>abc</node><node>efg</node></root>";
var xmlDoc = $.parseXML( usrconf );
$(xmlDoc).find('node').each(function(i) {
 $(this).attr('changed', true);
});
console.log(xmlDoc);

または、シリアル化して戻したい場合

var usrconf = "<root><node>abc</node><node>efg</node></root>";
var xmlDoc = $.parseXML( usrconf );
$(xmlDoc).find('node').each(function(i) {
 $(this).attr('changed', true);
});

console.log(xmlDoc);

// from http://stackoverflow.com/a/6507766/141200
function xmlToString(xmlData) { 

    var xmlString;
    //IE
    if (window.ActiveXObject){
        xmlString = xmlData.xml;
    }
    // code for Mozilla, Firefox, Opera, etc.
    else{
        xmlString = (new XMLSerializer()).serializeToString(xmlData);
    }
    return xmlString;
}   

console.log(xmlToString(xmlDoc)); 

​
于 2012-08-09T21:28:38.947 に答える