Pytanie w sprawie xml, javascript, jquery – pisanie plików XML za pomocą jQuery

4

Zmiana atrybutów xml przez jquery jest łatwa do wykonania, po prostu:

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

ale jak mogę dodać kolejny tag do pliku? Próbowałem użyć dodawania JS umiera cicho.

Czy jest jakiś sposób, aby to zrobić?

Wyjaśnienia: ten kod jest częścią rozszerzenia firefox, więc nie martw się o zapisywanie w systemie plików użytkownika. Nadal dołączanie nie działa jeszcze dla dokumentów XML. Mogę zmienić wartości atrybutów XML

Twoja odpowiedź

2   odpowiedź
1

Sugeruję przejście przez kod za pomocą debugera i sprawdzenie, czy można określić, dlaczego dodatek powoduje błąd (lub czy błąd występuje gdzie indziej). Coś jak:

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

powinien działać dobrze.

Mogę potwierdzić, że cicho umiera Yarin
nie ma błędu, ale funkcja przestaje działać. CamelCamelCamel
Czy próbowałeś powiązanych manipulatorów, takich jak prepend () i insertAfter ()? acrosman
10

Problem polega na tym, że jQuery tworzy nowy węzeł w bieżącymdokument strony internetowej, w wyniku czego węzeł nie może zostać dołączony do innego dokumentu XML. Zatem węzeł musi zostać utworzony w dokumencie XML.

Możesz to zrobić tak

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 ma rację co do IE - jednak od jQuery 1.5 powinieneś być w stanie użyć .parseXML (...), aby rozwiązać ten problem (Nie testowałem):api.jquery.com/jQuery.parseXML Yarin
Działa to dobrze w FF i Chrome, ale IE nie podoba się to zbytnio. Problem polega na tym, że nie może przeanalizować początkowego ciągu XML w pierwszym wyrażeniu. Nawet jeśli poradzisz sobie z analizowaniem specyficznym dla IE, umieszczenie dokumentu XML w obiekcie jQuery nie pozwala na dołączenie go do węzła <xml>, jak pokazano powyżej. Metoda „html” również nie działa, należy użyć „innerHTML” i nadać jej początkowy łańcuch XML jako wartość. Próba znalezienia węzłów w węźle <XML> również nie będzie działać. Będziesz musiał użyć $ („foo bar: first”, xmlDoc), aby zapewnić kontekst dla jQuery. Raybiez

Powiązane pytania