Come rimuovere gli spazi dei nomi XML utilizzando Javascript?

Sto scoprendo che, per i miei scopi, gli spazi dei nomi XML stanno semplicemente causando molta mal di testa e sono completamente inutili. (Ad esempio, come complicano xpath.)

C'è un modo semplice per rimuovere completamente gli spazi dei nomi da un documento XML?

(C'è una domanda correlata, ma riguarda la rimozione dei prefissi dei namespace sui tag, piuttosto che le dichiarazioni dello spazio dei nomi dalla radice del documento: " modo semplice per abbandonare gli spazi dei nomi XML con javascript ".)

Modifica: i campioni e più dettagli qui sotto:

XML:

    <?xml version="1.0" ?> <main xmlns="example.com"> <primary> <enabled>true</enabled> </primary> <secondary> <enabled>false</enabled> </secondary> </main> 

    JavaScript:

     function useHttpResponse() { if (http.readyState == 4) { if(http.status == 200) { var xml = http.responseXML; var evalue = getXMLValueByPath('/main/secondary/enabled', xml); alert(evalue); } } } function getXMLValueByPath(nodepath, xml) { var result = xml.evaluate(nodepath, xml, null, XPathResult.STRING_TYPE, null).stringValue; return result; } 

    Il XML di esempio è proprio come quello reale con cui sto lavorando, anche se molto più corta. Notare che non ci sono prefissi sui tag per lo spazio dei nomi. Suppongo che questo sia lo spazio dei nomi null o predefinito.

    Il JavaScript è uno snippet dalle mie funzioni ajax. Se xmlns="example.com" porzione xmlns="example.com" dal tag main , posso get il valore. Finché è presente qualsiasi spazio dei nomi, il valore diventa indefinito.

    Modifica 2:

    Vale la pena ricordare che nessuno degli spazi dei nomi dichiarati è effettivamente utilizzato nei tag XML (come il campione di cui sopra). Nel file XML reale che sto lavorando, vengono dichiarati tre spazi dei nomi, ma nessun tag è prefisso con un riferimento di spazio dei nomi. Pertanto, forse la questione dovrebbe essere nuovamente intitolata "Come rimuovere gli spazi dei nomi XML non utilizzati utilizzando Javascript?" Non vedo la ragione per mantenere uno spazio dei nomi se è 1) mai usato e 2) complicare un path altrimenti semplice per un nodo utilizzando xpath.

    Ciò dovrebbe rimuovere qualsiasi dichiarazione di spazio dei nomi che trovi:

     var xml = http.responseXML.replace(/<([a-zA-Z0-9 ]+)(?:xml)ns=\".*\"(.*)>/g, "<$1$2>");