コアポイント
前の記事「XMLをPHPでJSONプロキシサーバーを作成する方法」では、XMLメッセージをAJAXで利用可能なJSONに変換するシステムを作成しました。これは、PHPまたは他の適切なサーバー側プロセスを実行する場合に最適です。しかし、JavaScriptに限定されている場合はどうなりますか? XMLドキュメントのデータへのランダムアクセスは興味深いものではありません。 DOMまたはXPathメソッドを使用できますが、MyOBJ.List [0] .Property1などのネイティブ(JSONで生成された)JavaScriptオブジェクトプロパティほど簡単ではありません。同じXMLドキュメントでデータに頻繁にアクセスする場合、最初にJavaScriptオブジェクトに変換する方がより実用的かもしれません。コードを書く準備はできていますか? ...
xml2jsobj関数
XMLドキュメントDOMツリーの各ノードを再帰的に分析し、JavaScriptオブジェクトを返す関数を書き込みます。この関数は、開始ノード(通常はルートドキュメメント)を渡し、オブジェクト(内部指定データ)を返します。
function XML2jsobj(node) { var data = {}; // 添加值 function Add(name, value) { if (data[name]) { if (data[name].constructor != Array) { data[name] = [data[name]]; } data[name][data[name].length] = value; } else { data[name] = value; } }; // 元素属性 var c, cn; for (c = 0; cn = node.attributes[c]; c++) { Add(cn.name, cn.value); } // 子元素 for (c = 0; cn = node.childNodes[c]; c++) { if (cn.nodeType == 1) { if (cn.childNodes.length == 1 && cn.firstChild.nodeType == 3) { // 文本值 Add(cn.nodeName, cn.firstChild.nodeValue); } else { // 子对象 Add(cn.nodeName, XML2jsobj(cn)); } } } return data; }
xml変換
ajax通話は、WebサービスからXMLを取得できます:
// 示例 XML 提要 var url = "example.xml"; // AJAX 请求 var xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP")); xhr.onreadystatechange = XHRhandler; xhr.open("GET", url, true); xhr.send(null);
したがって、example.xmlが次のXMLデータを返します:
// 处理响应 function XHRhandler() { if (xhr.readyState == 4) { var obj = XML2jsobj(xhr.responseXML.documentElement); // 对返回的数据执行某些操作... console.log(obj); xhr = null; } }
xml2jsobj(xhr.responsexml.documentelement)は、次のオブジェクトを返します
<?xml version="1.0"?><statuses><status><id>1</id><text>Hello!</text></status></statuses>
{ status: { id: ["one", 1], text: "Hello!" } }
XML2JSOBJに関するいくつかのメモ: デモページを表示するか、独自のプロジェクトで使用するコードと例をダウンロードできます。お役に立てば幸いです。XMLパズルを軽減している場合は、お知らせください。 XMLをJavaScriptオブジェクトに変換するFAQ
コンテンツのこの部分は元のテキストから繰り返され、省略されています。 元のテキストのFAQの内容は冗長であり、コードの例と高度に相関していないため、擬似オリジナルプロセスで合理化されています。
以上がXMLをJSONのようなJavaScriptオブジェクトに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。