2009-05-18 7 views
4

Je travaille avec du xml très peu intuitif (tous les tags sont des choses comme "TX", "H", "VC").créer un nouveau document vide avec javascript

Je voudrais faire une copie de ces données, mais avec tous les tags renommés à ce qu'ils signifient réellement. Puis-je créer un nouveau document vide dans lequel placer mes nouvelles balises joliment nommées?

J'ai essayé ceci:

doc = (new DOMParser()).parseFromString("", 'text/xml'); 

mais quand je le fais, je le vent avec un document qui a un nœud enfant, plutôt que d'être vide. En outre, la variable de cet enfant est "parsererror"

Alors, des idées comment je peux créer un document vide?

Répondre

1

Je ne pense pas que vous pouvez créer un document sans le nœud racine. Vous pouvez créer un nœud faux:

doc = (new DOMParser()).parseFromString("<dummy/>", 'text/xml'); 

Cependant, une meilleure solution pourrait être de créer des constantes pour les noms de nœuds:

// Use different variable names, like RealTxName, if desired 
var REAL_TX_NAME = "TX"; 
var REAL_H_NAME = "H"; 

... 
doc.find (REAL_TX_NAME); 
... 
+0

Merci. J'ai réfléchi à cette approche et je pourrais finir par l'utiliser. Je suis juste en train de faire quelques pas dans plusieurs directions pour voir de quelle façon l'apparence est plus prometteuse. – morgancodes

4

Je Hade la même question et je l'ai résolu comme ci-dessous:

xmlDoc = document.implementation.createDocument("", "", null); 
root = xmlDoc.createElement("description"); 
xmlDoc.appendChild(root); 
alert((new XMLSerializer()).serializeToString(xmlDoc)); 
2

Vous pouvez créer un document vide dans un navigateur compatible W3C DOM (IE9 + et le reste) avec le code suivant.

var doc = (new DOMParser()).parseFromString('<dummy/>', 'text/xml'); 
doc.removeChild(doc.documentElement); 
0
var xmldom = require('xmldom'); 
var tree = (new xmldom.DOMImplementation()).createDocument(); 
Questions connexes