那麼這裏有一個代碼,我已經寫了一個XML對象轉換爲本地JavaScript對象(包括數組)。你只需要調用
Object.fromXML(yourXMLObject)
,你會得到一個本地JavaScript對象,它的JSON相當於是這樣的:
{
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 első']}
]
}
功能的源代碼如下。
/**
* Tries to convert a given XML data to a native JavaScript object by traversing the DOM tree.
* If a string is given, it first tries to create an XMLDomElement from the given string.
*
* @param {XMLDomElement|String} source The XML string or the XMLDomElement prefreably which containts the necessary data for the object.
* @param {Boolean} [includeRoot] Whether the "required" main container node should be a part of the resultant object or not.
* @return {Object} The native JavaScript object which is contructed from the given XML data or false if any error occured.
*/
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("Cannot find an XML parser!");
}
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;
};
來源
2009-04-15 16:08:11
BYK
這是真的,這是神奇地通過web服務JSON化;但在JS中,我只看到[Object object] :) – balint 2009-04-15 15:47:43
[Object object]是您的數據 - 您可以像訪問數組一樣訪問它。 – btk 2010-07-24 03:47:01