UNPKG

consumerportal

Version:

mydna Custimised for you

363 lines (306 loc) 11.8 kB
<!DOCTYPE html> <html> <head> <script type="text/javascript" src="xml2json.min.js"></script> <!-- script type="text/javascript" src="xml2json.js"></script--> </head> <body> <h1>X2JS samples html</h1> <script type="text/javascript"> // Create x2js instance with default config var x2js = new X2JS(); // Available options var x2jsOptionsSample = new X2JS({ // Escaping XML characters. Default is true from v1.1.0+ escapeMode : true, // XML attributes prefix. Default is "_" attributePrefix : "_", // Array access form (none|property). // Use this property if you want X2JS generate additional property <element>_asArray // to access in array form any element // Default is 'none' from v1.1.0+ arrayAccessForm : "none", // Handling empty nodes (text|object). // When X2JS found empty node like <test></test> it will be transformed to test : '' for 'text' mode, // or to Object for 'object' mode // Default is 'text' emptyNodeForm : "text", // Enable/Disable auxiliary function in generated JSON object to print text nodes with __text/__cdata // Default is true enableToStringFunc : true, // Array access paths (array). // Use this option to configure paths to XML elements always in "array form". // You can configure beforehand paths to all your array elements based on XSD or your knowledge // about XML structure // Every path could be a simple string (like 'parent.child1.child2'), a regex (like /.*\.child2/), or a custom function // Default is empty array arrayAccessFormPaths : [], // Strip whitespaces (trimming text nodes) stripWhitespaces : true, // Skip empty text tags for nodes with children skipEmptyTextNodesForObj : true, // DateTime access paths (array). // Use this option to configure paths to XML elements for "datetimes form". // You can configure beforehand paths to all your array elements based on XSD or your knowledge // about XML structure // Every path could be a simple string (like 'parent.child1.child2'), a regex (like /.*\.child2/), or a custom function // Default is empty array datetimeAccessFormPaths : [] }); // JSON to DOM var xmlDoc = x2js.json2xml( { MyRoot : { MyChild : 'my_child_value', MyAnotherChild: 10, MyArray : [ 'test', 'test2' ], MyArrayRecords : [ { ttt : 'vvvv' }, { ttt : 'vvvv2' } ] } } ); // JSON to XML string var xmlDocStr = x2js.json2xml_str( { MyRoot : { MyChild : 'my_child_value', MyAnotherChild : 10, MyArray : [ 'test', 'test2' ], MyArrayRecords : [ { ttt : 'vvvv' }, { ttt : 'vvvv2' } ] } } ); console.log(xmlDocStr); // JSON arrays to string var xmlDocStr = x2js.json2xml_str( { MyRoot : { namedItemArray: { item : [ { first: 'success1' } , { first: 'success2' } ] }, namedArray: [ { first: 'success1' } , { first: 'success2' } ], justArray: [ 'just success1', 'just success2' ], arrayWithAttrs : [ { _test : 'successAttr', __text : 'success', temp : 'successTemp' }, { _test : 'successAttr2', __text : 'success2', temp : 'successTemp2' } ] } } ); console.log(xmlDocStr); // XML string to JSON var xmlText = "<MyOperation><test>Success</test><test2><item>ddsfg</item><item>dsdgfdgfd</item></test2></MyOperation>"; var jsonObj = x2js.xml_str2json( xmlText ); console.log(jsonObj.MyOperation.test); // Array access form examples console.log(x2js.asArray(jsonObj.MyOperation.test)[0]); // Or old style (1.0.+): x2jsOld = new X2JS({arrayAccessForm : "property"}); jsonObj = x2jsOld.xml_str2json( xmlText ); console.log("Old is "+jsonObj.MyOperation.test_asArray[0]); // XML/DOM to JSON var xmlText = " <MyOperation> <test>- Success -</test> <test2> TestText <item> ddsfg </item> TestText2 <item>dsdgfdgfd</item></test2></MyOperation>" xmlDoc=x2js.parseXmlString(xmlText); var jsonObj = x2js.xml2json( xmlDoc ); console.log(jsonObj.MyOperation.test); // Parsing XML attrs var xmlText = "<MyOperation myAttr='SuccessAttrValue'><txtAttrChild sAttr='SUCCESS TXT ATTR CHILD'>SUCCESS TXT</txtAttrChild><test>Success</test><test2 myAttr='SuccessAttrValueTest2'><item>ddsfg</item><item>dsdgfdgfd</item></test2></MyOperation>"; var jsonObj = x2js.xml_str2json( xmlText ); console.log(jsonObj.MyOperation._myAttr); console.log(jsonObj.MyOperation.test2._myAttr); console.log(jsonObj.MyOperation.txtAttrChild._sAttr); console.log(jsonObj.MyOperation.txtAttrChild.__text); console.log(jsonObj.MyOperation.txtAttrChild.toString()); // JSON to XML attrs var xmlDocStr = x2js.json2xml_str( { TestAttrRoot : { _myAttr : 'myAttrValue', MyChild : 'my_child_value', MyAnotherChild: 10, MyTextAttrChild : { _myTextAttr : 'myTextAttrValue', __text : 'HelloText' } } } ); console.log(xmlDocStr); //Change prefix for attributes var x2jsChangedAttrs = new X2JS({ // XML attributes. Default is "_" attributePrefix : "$$" }); jsonObj = x2jsChangedAttrs.xml_str2json( xmlText ); console.log(jsonObj.MyOperation.$$myAttr); console.log(jsonObj.MyOperation.test2.$$myAttr); console.log(jsonObj.MyOperation.txtAttrChild.$$sAttr); xmlDocStr = x2jsChangedAttrs.json2xml_str({ TestAttrRoot : { _myAttr : 'myAttrValue', MyChild : 'my_child_value', MyAnotherChild: 10, MyTextAttrChild : { $$myTextAttr : 'myTextAttrValue', __text : 'HelloText' } } } ); console.log(xmlDocStr); // Parse XML with namespaces var xmlText = "<testns:MyOperation xmlns:testns='http://www.example.org'><test>Success</test><test2 myAttr='SuccessAttrValueTest2'><item>ddsfg</item><item>dsdgfdgfd</item><item2>testArrSize</item2></test2></testns:MyOperation>"; var jsonObj = x2js.xml_str2json( xmlText ); console.log(jsonObj.MyOperation.test); if(jsonObj.MyOperation.test2.item.length > 2) console.log("Error! Incorrect array len!"); var testObjC = { 'm:TestAttrRoot' : { '_tns:m' : 'http://www.example.org', '_tns:cms' : 'http://www.example.org', MyChild : 'my_child_value', 'cms:MyAnotherChild' : 'vdfd' } } // Parse JSON object with namespaces var xmlDocStr = x2js.json2xml_str( testObjC ); console.log(xmlDocStr); // Parse JSON object constructed with another NS-style var testObjNew = { TestAttrRoot : { __prefix : 'm', '_tns:m' : 'http://www.example.org', '_tns:cms' : 'http://www.example.org', MyChild : 'my_child_value', MyAnotherChild : { __prefix : 'cms', __text : 'vdfd' } } } // Parse JSON object with namespaces var xmlDocStr = x2js.json2xml_str( testObjNew ); console.log(xmlDocStr); // Parse XML with header var xmlText = "<?xml version='1.0' encoding='utf-8' ?>\n"+ "<test>XML HEADER SUCCESS!</test>"; var jsonObj = x2js.xml_str2json( xmlText ); console.log(jsonObj.test); // Parse XML with CDATA var xmlText = "<!-- Root comment --><test><simple>simple success</simple><data><![CDATA[<CDATA success/>]]></data> </test>"; var jsonObj = x2js.xml_str2json( xmlText ); console.log(jsonObj.test.data.toString()); console.log(jsonObj.test.data.__cdata); console.log(jsonObj.test.simple); // Parse JSON object with CDATA var xmlDocStr = x2js.json2xml_str( jsonObj ); console.log(xmlDocStr); // Parse JSON with emtpy attributes var xmlDocStr = x2js.json2xml_str( { MyRoot : { MyNullChild : null, MyNullChild2 : undefined, MyAnotherChild : 10, MyEmptyChild : { _attr : "test" }, MyEmptyChild2 : { _attr : "test", __text : "Empty Nodes Test" } } } ); console.log(xmlDocStr); // Escaping XML characters xmlDocStr = x2js.json2xml_str( { MyRoot : { MyEscapeXmlChild : "<success> & \" ' / </success>", MyEscapeXmlChild2 : { _attr : "success&", __text : "<success> & \" ' / </success>" }, MyEscapeXmlChildNonString : false } } ); console.log(xmlDocStr); jsonObj = x2js.xml_str2json( xmlDocStr ); console.log(jsonObj.MyRoot.MyEscapeXmlChild); console.log(jsonObj.MyRoot.MyEscapeXmlChild2._attr); console.log(jsonObj.MyRoot.MyEscapeXmlChild2.toString()); // Array access path x2js = new X2JS({ arrayAccessFormPaths : [ "MyArrays.test4.item", /.*\.test3\.item/ ] }); xmlText = "<MyArrays>"+ "<test2><item>success</item><item>second</item></test2>"+ "<test3><item>success</item></test3>"+ "<test4><item>success</item></test4>"+ "<test5><item>success</item></test5>"+ "</MyArrays>"; jsonObj = x2js.xml_str2json( xmlText ); console.log(jsonObj.MyArrays.test3.item[0]); console.log(jsonObj.MyArrays.test4.item[0]); console.log(jsonObj.MyArrays.test5.item); // Working with datetimes x2js = new X2JS({ datetimeAccessFormPaths : [ "MyDts.testds", /.*\.testdt.*/ ] }); xmlText = "<MyDts>"+ "<testds>2002-10-10T12:00:00+04:00</testds>"+ "<testdt1>2002-10-10T12:00:00Z</testdt1>"+ "<testdt2>2002-10-10T12:00:00</testdt2>"+ "<testdc>2002-10-10T12:00:00Z</testdc>"+ "</MyDts>"; jsonObj = x2js.xml_str2json( xmlText ); console.log(jsonObj.MyDts.testds); console.log(jsonObj.MyDts.testdt1); console.log(jsonObj.MyDts.testdt2); console.log(x2js.asDateTime( jsonObj.MyDts.testdc )); console.log(x2js.getVersion()); console.log('-- ALL TESTS COMPLETED! --'); </script> </body> </html>