Nun hier ist ein Code, den ich geschrieben habe, um ein XML-Objekt in ein natives JavaScript-Objekt (einschließlich Arrays) umzuwandeln. Sie müssen nur folgendes aufrufen:
Object.fromXML(yourXMLObject)
Und Sie erhalten ein natives JavaScript-Objekt, dessen JSON-Äquivalent diesem entspricht:
{
ArrayOfString:
[
{string: ['1710', '1711', '1712', '1713']},
{string: ['Teleszkóp 350mm gázas', 'Teleszkóp 150mm olaj', 'Teleszkóp 260mm olaj sárga', 'Teleszkóp 260mm elso']}
]
}
Der Quellcode der Funktion befindet sich unten.
/**
* Versucht, eine gegebene XML-Daten in ein natives JavaScript-Objekt umzuwandeln, indem es den DOM-Baum durchläuft.
* Wenn ein String übergeben wird, versucht es zunächst ein XMLDomElement aus dem gegebenen String zu erstellen.
*
* @param {XMLDomElement|String} source Der XML-String oder das XMLDomElement, das vorzugsweise die erforderlichen Daten für das Objekt enthält.
* @param {Boolean} [includeRoot] Ob der "erforderliche" Hauptcontainerknoten Teil des resultierenden Objekts sein soll oder nicht.
* @return {Object} Das nativen JavaScript-Objekt, das aus den gegebenen XML-Daten erstellt wurde, oder false, wenn ein Fehler aufgetreten ist.
*/
Object.fromXML=function(source, includeRoot)
{
if (typeof source=='string')
{
try
{
if (window.DOMParser)
source=(new DOMParser()).parseFromString(source, "application/xml");
else if (window.ActiveXObject)
{
var xmlObject=new ActiveXObject("Microsoft.XMLDOM");
xmlObject.async=false;
xmlObject.loadXML(source);
source=xmlObject;
xmlObject=undefined;
}
else
throw new Error("XML-Parser nicht gefunden!");
}
catch(error)
{
return false;
}
}
var result={};
if (source.nodeType==9)
source=source.firstChild;
if (!includeRoot)
source=source.firstChild;
while (source)
{
if (source.childNodes.length)
{
if (source.tagName in result)
{
if (result[source.tagName].constructor != Array)
result[source.tagName] = [result[source.tagName]];
result[source.tagName].push(Object.fromXML(source));
}
else
result[source.tagName] = Object.fromXML(source);
}
else if (source.tagName)
result[source.tagName] = source.nodeValue;
else
result = source.nodeValue;
source = source.nextSibling;
}
return result;
};