2010-11-22 4 views
0

Ich verwende jQuery, um meinem XML-Dokument im Speicher ein XML-Element hinzuzufügen.So entfernen Sie den Standardnamespace, wenn Sie jQuery.appendTo für ein XML-Dokument verwenden

var newElem = xmlDoc.find("newElem"); 
if (newElem.length == 0) 
    newElem = $("<newElem/>").appendTo(xmlDoc); 

Was ich am Ende mit:

<newElem xmlns="http://www.w3.org/1999/xhtml"></newElem> 

Diese xml in einem AJAX-Aufruf an den Server geschickt und Namespaces in dom4j Standard verwenden, ist ein Schmerz. Gibt es eine Möglichkeit, das Hinzufügen der Standardnamespaces zu beenden?

Ich benutze Firefox übrigens. Könnte das eine Browser-spezifische Sache sein?

Antwort

0

Es ist wahrscheinlich etwas, was jQuery nicht zu unterstützen, weil es einfach createElement statt createElementNS verwendet. Der Nettoeffekt ist, dass es immer den Dokument (HTML) -Namespace verwendet.

Sie möchten wahrscheinlich document.createElementNS direkt verwenden.

+0

Stellt sich heraus, mit createElement funktioniert gut. Der Schlüssel ist, das zu verwenden und nicht die internen Erstellungsroutinen von jQuery. –

+0

Okay, ich denke, es hat damit zu tun, mit welchem ​​Dokument Sie es aufrufen. jQuery ruft es immer auf 'window.document' auf, während Sie es wahrscheinlich in Ihrem eigenen Dokument tun. Gut zu hören, dass es funktioniert! –

0

Sie können nicht die $("<newElem/>")-Syntax verwenden - das erstellt ein neues XML-Dooc aus dem -Stamm, daher die xmlns.

Sie müssen den nicht-jQuery plain-Javascript createelement() -Methode verwenden:

var el = xmlDoc.createElement(childname); // Create non-jq element 
el = $(el);        // jQuery-ize it 
el.appendTo(xmlDoc);      // Append using jq object 

Und während ich es bin, wenn Sie zu einem jQuery-XML-Knoten sind anhängen, die nicht ist die Dokument, verwenden

var el = parent.context.createElement(childname);