当前位置: 首页 > 工具软件 > XML to JSON > 使用案例 >

【JS】使用javascript将xml转为json

葛永丰
2023-12-01
<span style="white-space:pre">	</span>// Changes XML to JSON
	function xmlToJson(xml) {
		// Create the return object
		var obj = {};
		 
		if (xml.nodeType == 1) { // element
			// do attributes
			if (xml.attributes.length > 0) {
			obj["@attributes"] = {};
				for (var j = 0; j < xml.attributes.length; j++) {
					var attribute = xml.attributes.item(j);
					obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
				}
			}
		} else if (xml.nodeType == 3) { // text
			obj = xml.nodeValue;
		}
		 
		// do children
		if (xml.hasChildNodes()) {
			for(var i = 0; i < xml.childNodes.length; i++) {
				var item = xml.childNodes.item(i);
				var nodeName = item.nodeName;
				if (typeof(obj[nodeName]) == "undefined") {
					obj[nodeName] = xmlToJson(item);
				} else {
					if (typeof(obj[nodeName].length) == "undefined") {
						var old = obj[nodeName];
						obj[nodeName] = [];
						obj[nodeName].push(old);
					}
					obj[nodeName].push(xmlToJson(item));
				}
			}
		}
		return obj;
	};


下面的XML为:

<span style="white-space:pre">	</span><ALEXA VER="0.9" URL="davidwalsh.name/" HOME="0" AID="=">
		<SD TITLE="A" FLAGS="" HOST="davidwalsh.name">
			<TITLE TEXT="David Walsh Blog :: PHP, MySQL, CSS, Javascript, MooTools, and Everything Else"/>
			<LINKSIN NUM="1102"/>
			<SPEED TEXT="1421" PCT="51"/>
		</SD>
		<SD>
			<POPULARITY URL="davidwalsh.name/" TEXT="7131"/>
			<REACH RANK="5952"/>
			<RANK DELTA="-1648"/>
		</SD>
	</ALEXA></span>
通过上面的函数转换后的JSON为:

{
	"@attributes": {
		AID: "=",
		HOME:  0,
		URL: "davidwalsh.name/",
		VER: "0.9",
	},
	SD = [
		{
			"@attributes": {
				FLAGS: "",
				HOST: "davidwalsh.name",
				TITLE: A
			},
			LINKSIN: {
				"@attributes": {
					NUM: 1102
				}
			},
			SPEED: {
				"@attributes": {
					PCT: 51,
					TEXT: 1421
				}
			},
			TITLE: {
				"@attributes": {
					TEXT: "David Walsh Blog :: PHP, MySQL, CSS, Javascript, MooTools, and Everything Else",
				}
			},
		},
		{
			POPULARITY: {
				"@attributes": {
					TEXT: 7131,
					URL: "davidwalsh.name/"
				}
			},
			RANK: {
				"@attributes": {
					DELTA: "-1648"
				}
			},
			REACH: {
				"@attributes": {
					RANK = 5952
				}
			}
		}
	]
}




 类似资料: