Frage an jquery, javascript, xml – Schreiben von XML-Dateien mit jQuery

4

Das Ändern von XML-Attributen durch JQuery ist ganz einfach.

$(this).attr('name', 'hello');

Aber wie kann ich der Datei ein weiteres Tag hinzufügen? Ich habe versucht, den JS-Würfel lautlos anzuhängen.

Gibt es eine Möglichkeit, dies zu tun?

Klarstellungen: Dieser Code ist Teil einer Erweiterung von Firefox. Machen Sie sich also keine Gedanken über das Speichern im Benutzerdateisystem. Das Anhängen funktioniert bei XML-Dokumenten immer noch nicht, aber ich kann XML-Attributwerte ändern

Deine Antwort

2   die antwort
10

dokumentieren Daher kann der Knoten im Ergebnis nicht an ein anderes XML-Dokument angehängt werden. Der Knoten muss also im XML-Dokument erstellt werden.

Das können Sie so machen

var xml = $('<?xml version="1.0"?><foo><bar></bar><bar></bar></foo>'); // Your xml
var xmlCont = $('<xml>'); // You create a XML container
xmlCont.append(xml); // You append your XML to the Container created in the main document

// Now you can append without problems to you xml
xmlCont.find('foo bar:first').append('<div />');

xmlCont.find('foo bar div'); // Test so you can see it works
@Raybiez ist in Bezug auf den IE korrekt. Ab jQuery 1.5 sollten Sie jedoch in der Lage sein, .parseXML (...) zu verwenden, um dieses Problem zu beheben (nicht getestet):api.jquery.com/jQuery.parseXML Yarin
Dies funktioniert gut in FF & Chrome, aber der IE mag es nicht sehr. Das Problem ist, dass die anfängliche XML-Zeichenfolge im ersten Ausdruck nicht analysiert werden kann. Selbst wenn Sie das IE-spezifische Parsing durchführen, können Sie Ihr XML-Dokument nicht wie oben gezeigt an den <xml> -Knoten anhängen, indem Sie es in ein jQuery-Objekt einschließen. Die 'html'-Methode funktioniert auch nicht, man muss' innerHTML 'verwenden und ihm den anfänglichen XML-String als Wert geben. Der Versuch, Knoten im <XML> -Knoten zu finden, funktioniert ebenfalls nicht. Sie müssen $ ("foo bar: first", xmlDoc) verwenden, um einen Kontext für jQuery bereitzustellen. Raybiez
1

dass Sie den Code mit einem Debugger durchgehen und prüfen, ob Sie feststellen können, warum der Anhang einen Fehler verursacht (oder ob der Fehler an einer anderen Stelle auftritt). So etwas wie:

$('selector').append('<p></p>');

sollte gut funktionieren.

Es liegt kein Fehler vor, aber die Funktion wird nicht mehr ausgeführt. CamelCamelCamel
Haben Sie die zugehörigen Manipulatoren wie prepend () und insertAfter () ausprobiert? acrosman
Ich kann bestätigen, dass dies lautlos stirbt Yarin

Verwandte Fragen