js 구현된 xml 대상 전환 json 기능 예시

5414 단어
본고의 실례는 js가 실현한 xml 대상의 json 기능을 설명한다.여러분에게 참고하도록 공유하겠습니다. 구체적으로는 다음과 같습니다.
무한 레벨 xml 구조 대상의 json 전환을 지원하고 임의의 탭 속성의 json 전환을 지원합니다 (i8 등 브라우저 호환)
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 역행 알고리즘과 기교 총결산》 및 《JavaScript 수학 연산법 총결산》
이 문서가 JavaScript 프로그램 설계에 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기