0
我解析具有這種功能的XML文件:從JSON對象,除去多餘的括號和數據 - 的Javascript
function xmlToJson(xml) {
var attr, child, attrs = xml.attributes,
children = xml.childNodes,
key = xml.nodeType,
obj = {},
i = -1,
o = 0;
if (key == 1 && attrs.length) {
obj[key = o] = {};
while (attr = attrs.item(++i)) {
obj[key][attr.nodeName] = attr.nodeValue;
}
i = -1;
} else if (key == 3) {
obj = xml.nodeValue;
}
while (child = children.item(++i)) {
key = child.nodeName;
if (obj.hasOwnProperty(key)) {
if (obj.toString.call(obj[key]) != '[object Array]') {
obj[key] = [obj[key]];
}
obj[key].push(xmlToJson(child));
} else {
obj[key] = xmlToJson(child);
}
}
return obj;
}
解析在下面的字符串中的下一個文件的結果(透過JSON.stringify所示):
文件(不包括「<」字符因爲它的內容是不可見的話,但在我的文件中很明顯,我已經得到了他們):
?xml version="1.0" encoding="UTF-8" standalone="no"?>
playlist>
vid src="video/intro.mp4" type="video/mp4"/>
vid src="video/intro.mp4" type="video/mp4"/>
/playlist>
JSON:
{"playlist":{"#text":["\n","\n","\n"],"vid":[{"0":{"src":"video/intro.mp4","type":"video/mp4"}},{"0":{"src":"video/intro.mp4","type":"video/mp4"}}]}}
,但我需要的輸出只是:
[{"0":{"src":"video/intro.mp4","type":"video/mp4"}},{"0":{"src":"video/intro.mp4","type":"video/mp4"}}]
很抱歉,如果noob問題,但我作爲新JS以JSON和我與他們的日子可用我的一隻手的手指數着。
在此先感謝。
編輯:已解決 - 我自己解決:不是粗魯不允許將對象轉換爲字符串,而是決定將其轉換爲'子字符串',然後再轉換剩餘的字符串。這是結果:
JSON.parse(JSON.stringify(jsonPlaylist).substring(44,JSON.stringify(jsonPlaylist).length-2));
假設jsonPlaylist
是包含整個解析的XML文件中的字符串變種。
是的,我想類似的東西,但它需要我的JSON對象轉換爲字符串。事實是,我需要JSON對象繼續保持這種狀態,一個JSON對象(我只是使用JSON.stringify來顯示輸出並檢查它是否正確),以便稍後使用它。因此,我無法將其轉換爲字符串。 – 2012-08-07 11:04:14
我想你現在已經想通了,stringify,replace,parse> use :) – Prasanth 2012-08-07 12:32:24