JavaScriptを利用してXMLをJSONに変換します.
6314 ワード
最近開発プロジェクトの時に必要なものがありました.データベースから検索したxml新聞の文字列は解析処のパラメータが必要です.ページで修正をサポートするため、JavaScriptを利用してXMLテキストを解析する機能が生まれました.具体的な考え方は、XMLのDOMオブジェクトを現在取得し、サブ要素のnodeValueを巡回と再帰的に取得することによって、JSON文字列をつづり合わせます.
XML文字列によってXMLのDOMオブジェクトが生成される:
適用範囲:atributeを含まない任意のXMLドキュメント.
今は第一バージョンのXMLからJSONに移行するツールです.足りないところと改善が必要なところがたくさんあるかもしれません.GitHubで最新のコードを更新します.プロジェクトの住所:https://github.com/TsuiXh/xml_Jsonconvertertool、皆さんの質問を歓迎します.
XML文字列によってXMLのDOMオブジェクトが生成される:
/**
* xml xml
* @param xmlString xml
* @returns xml Document
*/
function getXmlDocumentByXmlString(xmlString) {
var xmlDoc = null;
if (window.DOMParser) {
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString, "text/xml");
} else {
//IE
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlString);
}
return xmlDoc;
}
またはXMLファイルを要求してXMLのDOMオブジェクトを取得する:/**
* xml xml
* @param xmlFilePath xml , :files/test.xml
* @returns xml Document
*/
function getXmlDocumentByFilePath(xmlFilePath) {
//xmlDocument
var xmlDoc = null;
//xmlhttp
var xmlhttp = null;
if (window.XMLHttpRequest) {
//IE7+, FireFox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
//IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", xmlFilePath, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
return xmlDoc;
}
次はポイントです.XMLをJSON文字列に変換します./**
* XML Document JSON
* @param xmlDoc xml Document
* @return string
*/
function convertToJSON(xmlDoc) {
// JSON ( )
var jsonStr = "";
var buffer = new Array();
buffer.push("{");
// xml
var nodeList = xmlDoc.childNodes;
generate(nodeList);
/**
* , xml , json
* @param node_list xml nodeList
*/
function generate(node_list) {
for (var i = 0; i < node_list.length; i++) {
var curr_node = node_list[i];
//
if (curr_node.nodeType == 3) {
continue;
}
// ,
if (curr_node.childNodes.length > 1) {
buffer.push("\"" + curr_node.nodeName + "\": {");
generate(curr_node.childNodes);
} else {
var firstChild = curr_node.childNodes[0];
if (firstChild != null) {
//nodeValue null
buffer.push("\"" + curr_node.nodeName + "\":\"" + firstChild.nodeValue + "\"");
} else {
//nodeValue null
buffer.push("\"" + curr_node.nodeName + "\":\"\"");
}
}
if (i < (node_list.length - 2)) {
buffer.push(",");
} else {
break;
}
}
// "}"
buffer.push("}");
}
jsonStr = buffer.join("");
return jsonStr;
}
使用方法:getXmLDocumentByFilePath(xmlFilePath)
またはgetXmlDocumentByXmlString(xmlString)
によってXMLのDcumentオブジェクトを取得し、convertToJSON(xmlDocument)
によってxmlに入ってきたDucumentオブジェクトを呼び出して変換後のJSON文字列を得ることができる.適用範囲:atributeを含まない任意のXMLドキュメント.
今は第一バージョンのXMLからJSONに移行するツールです.足りないところと改善が必要なところがたくさんあるかもしれません.GitHubで最新のコードを更新します.プロジェクトの住所:https://github.com/TsuiXh/xml_Jsonconvertertool、皆さんの質問を歓迎します.