js実装xmlオブジェクト回転json機能例
5520 ワード
この例では、jsが実装するxmlオブジェクト回転json機能について説明します.皆さんの参考にしてください.具体的には以下の通りです.
無限レベルxml構造オブジェクトのjson転送をサポートし、任意のラベル属性のjson転送(ie 8などのブラウザ対応)をサポートします.
xml文字列はxmlオブジェクトを回転します.
使用方法:
パラメータの設定:
(1) xmltojson(xmlobj);//結果は次のように返されます.
(2)xmltojson(xmlobj,'USERS/USER',true);結果は次のとおりです.
PS:ここではxml操作に関するオンラインツールをいくつか提供します.
オンラインXML/JSON相互変換ツール:http://tools.jb51.net/code/xmljson
オンラインフォーマットXML/オンライン圧縮XML:http://tools.jb51.net/code/xmlformat
XMLオンライン圧縮/フォーマットツール:http://tools.jb51.net/code/xml_format_compress
XMLコードオンラインフォーマット美化ツール:http://tools.jb51.net/code/xmlcodeformat
JavaScriptに関する詳細は、「JavaScript操作XMLファイルテクニック総括」、「JavaScript中json操作テクニック総括」、「JavaScript検索アルゴリズムテクニック総括」、「JavaScriptエラーとデバッグテクニック総括」、「JavaScriptデータ構造とアルゴリズムテクニック総括」、「JavaScript遍歴アルゴリズムとテクニック総括」および「JavaScript数学演算使い方総括」のトピックを参照してください.
JavaScriptプログラムの設計に役立つことを願っています.
無限レベルxml構造オブジェクトのjson転送をサポートし、任意のラベル属性のjson転送(ie 8などのブラウザ対応)をサポートします.
xml文字列はxmlオブジェクトを回転します.
function loadXml(str) {
if (str == null) {
return null;
}
var doc = str;
try{
doc = createXMLDOM();
doc.async = false;
doc.loadXML(str);
}catch(e){
doc = $.parseXML(str);
}
return doc;
}
/**
*xml json
*xmlObj:xml
*nodename: ('ROOT/ITEM')
*isarray:true,
**/
function xmltojson(xmlObj,nodename,isarray){
var obj=$(xmlObj);
var itemobj={};
var nodenames="";
var getAllAttrs=function(node){// xml json
var _itemobj={};
var notNull=false;
var nodechilds=node.childNodes;
var childlenght=nodechilds.length;
var _attrs=node.attributes;
var firstnodeName="#text";
try{
firstnodeName=nodechilds[0].nodeName;
}catch(e){}
if((childlenght>0&&firstnodeName!="#text")||_attrs.length>0){
var _childs=nodechilds;
var _childslength=nodechilds.length;
var _fileName_="";
if(undefined!=_attrs){
var _attrslength=_attrs.length;
for(var i=0; i<_attrslength i="" var="" attrname="_attrs[i].nodeName;" attrvalue="_attrs[i].nodeValue;" _itemobj="" for="" j="0;" _childslength="" _node="_childs[j];" _fildname="_node.nodeName;" if="" instanceof="" array="" a="_itemobj[_fildName];" _fildvalue="getAllAttrs(_node);" try="" return="" nodenames="nodename.split("/")" obj="obj.find(nodenames[i]);" itemobj="">0){
itemobj[item.nodeName]=getAllAttrs(item);
}else{
itemobj[item.firstChild.nodeName]=getAllAttrs(item.firstChild);
}
}
});
if(nodenames.length>1){
itemobj=itemobj[nodenames[nodenames.length-1]];
}
if(isarray&&!(itemobj instanceof Array)&&itemobj!=undefined){
itemobj=[itemobj];
}
return itemobj;
};
使用方法:
var xmlstr="" +
"" +
" " +
"00001 " +
" " +
"" +
" " +
"00002 " +
" " +
"" +
" " +
"00002 " +
" " +
" ";
var xmlobj=loadXml(xmlstr);
パラメータの設定:
(1) xmltojson(xmlobj);//結果は次のように返されます.
{
"USERS": {
"USER": [
{
"state": "0",
"USERNAME": {
"type": "String"
},
"length": 1,
"USERID": {
"type": "String"
}
},
{
"state": "1",
"USERNAME": {
"type": "String",
"size": "100"
},
"length": 1,
"USERID": "00002"
},
{
"USERNAME": " ",
"length": 1,
"USERID": "00002"
}
],
"length": 1
}
}
(2)xmltojson(xmlobj,'USERS/USER',true);結果は次のとおりです.
[
{
"state": "0",
"USERNAME": {
"type": "String"
},
"length": 1,
"USERID": {
"type": "String"
}
},
{
"state": "1",
"USERNAME": {
"type": "String",
"size": "100"
},
"length": 1,
"USERID": "00002"
},
{
"USERNAME": " ",
"length": 1,
"USERID": "00002"
}
]
PS:ここではxml操作に関するオンラインツールをいくつか提供します.
オンラインXML/JSON相互変換ツール:http://tools.jb51.net/code/xmljson
オンラインフォーマットXML/オンライン圧縮XML:http://tools.jb51.net/code/xmlformat
XMLオンライン圧縮/フォーマットツール:http://tools.jb51.net/code/xml_format_compress
XMLコードオンラインフォーマット美化ツール:http://tools.jb51.net/code/xmlcodeformat
JavaScriptに関する詳細は、「JavaScript操作XMLファイルテクニック総括」、「JavaScript中json操作テクニック総括」、「JavaScript検索アルゴリズムテクニック総括」、「JavaScriptエラーとデバッグテクニック総括」、「JavaScriptデータ構造とアルゴリズムテクニック総括」、「JavaScript遍歴アルゴリズムとテクニック総括」および「JavaScript数学演算使い方総括」のトピックを参照してください.
JavaScriptプログラムの設計に役立つことを願っています.