2014-11-17 15 views
5

Ich versuche, das folgende Element nodetree zu erstellen:unter Beibehaltung Fall Empfindlichkeit

<v:custProps> 
    <v:cp v:nameU="Cost"> 
</v:custProps> 

mit:

newCustprop = document.createElement("v:custProps"); 
newcp = document.createElement("v:cp"); 
newcp.setAttribute("v:nameU", "Cost"); 
newCustprop.appendChild(newcp); 

jedoch document.createElement("v:custProps")<v:custprops>-<v:custProps> im Gegensatz erzeugt. Gibt es trotzdem etwas, um diesem Parsing zu entkommen?


Edit 1:

ich derzeit this Artikel auf nodename Fall Empfindlichkeit gerade lese. Es ist jedoch für mein Problem etwas irrelevant, weil mein Code mit <![CDATA]]> nicht geparst ist und ich lieber nicht .innerHTML verwenden möchte.

Antwort

3

Sie müssen createElementNS()/setAttributeNS() verwenden und den Namespace angeben, nicht nur den Alias ​​/ das Präfix. Das Beispiel verwendet urn:v als Namespace.

var xmlns_v = "urn:v"; 
var newCustprop = document.createElementNS(xmlns_v, "v:custProps"); 
var newcp = document.createElementNS(xmlns_v, "v:cp"); 
newcp.setAttributeNS(xmlns_v, "v:nameU", "Cost"); 
newCustprop.appendChild(newcp); 

var xml = (new XMLSerializer).serializeToString(newCustprop); 

xml:

<v:custProps xmlns:v="urn:v"><v:cp v:nameU="Cost"/></v:custProps> 
2

Es wird nicht empfohlen, document.createElement für qualifizierte Namen zu verwenden. Sehen Sie, ob die document.createElementNS Ihren Zwecken besser dienen kann.

+0

'.createElementNS' fehlt den Namespace für XML-Elemente es scheint .. Ich habe es getestet und die Javascript erzeugt kehrt ein Groß- und Kleinschreibung Ergebnis. – Xenyal

Verwandte Themen