Compare Revisions

JXON

Change Revisions

Revision 330973:

Revision 330973 by mattbasta on

Revision 331409:

Revision 331409 by fusionchess on

Title:
JXON
JXON
Slug:
JXON
JXON
Tags:
"XML", "XMLHttpRequest", "AJAX", "JXON", "XPath", "Object-Oriented", "JSON", "Object", "Document", "DOM"
"XML", "XMLHttpRequest", "AJAX", "JXON", "XPath", "Object-Oriented", "JSON", "Object", "Document", "DOM"
Content:

Revision 330973
Revision 331409
n8      <strong style="line-height: 1.572;">JXON</strong> <span styn8      <strong>JXON</strong> (lossless <strong>J</strong>avaScript
>le="line-height: 1.572;">(lossless</span> <strong style="line-hei> <strong>X</strong>ML <strong>O</strong>bject <strong>N</strong>o
>ght: 1.572;">J</strong><span style="line-height: 1.572;">avaScrip>tation) is a generic name by which is defined the representation 
>t</span> <strong style="line-height: 1.572;">X</strong><span styl>of JavaScript Objects using <a href="/en/XML" title="en/XML">XML<
>e="line-height: 1.572;">ML</span> <strong style="line-height: 1.5>/a>. There are no real standards for this conversion, but <a href
>72;">O</strong><span style="line-height: 1.572;">bject</span> <st>="#The_Parker_Convention" title="The Parker Convention">some conv
>rong style="line-height: 1.572;">N</strong><span style="line-heig>entions begin to appear on the web</a>. There are some cases in w
>ht: 1.572;">otation) is a generic name by which is defined the re>hich the whole content of an XML document must be read from the J
>presentation of JavaScript Objects using</span> <a href="/en/XML">avaScript interpreter (like for web-apps languages or settings XM
> style="line-height: 1.572;" title="en/XML">XML</a><span style="l>L documents, for example). In these cases JXON could represent th
>ine-height: 1.572;">. There are no real standards for this conver>e most practical way.
>sion, but</span> <a href="#The_Parker_Convention" style="line-hei 
>ght: 1.572;" title="The Parker Convention">some conventions begin 
> to appear on the web</a><span style="line-height: 1.572;">. Ther 
>e are some cases in which the whole content of an XML document mu 
>st be read from the JavaScript interpreter (like for web-apps lan 
>guages or settings XML documents, for example). In these cases JX 
>ON could represent the most practical way.</span> 
9    </p>
10    <p>
11      In this article we will show how to convert a parsed XML {{
 > domxref("document") }} (i.e. an instance of <a href="http://www.
 >w3.org/TR/DOM-Level-2-Core/core.html#i-Document"><code>Document</
 >code></a>) to a JavaScript Object tree (i.e. a tree of nested ins
 >tances of <a href="/en/JavaScript/Reference/Global_Objects/Object
 >" title="en/JavaScript/Reference/Global_Objects/Object"><code>Obj
 >ect</code></a>) and viceversa, with some different algorithms. It
 > could be useful to read the&nbsp;<a href="/en/XML_Introduction" 
 >title="en/XML_Introduction">XML introduction article</a> first.
12    </p>
13    <p>
14      If you want <strong>a complete bidirectional JXON library</
 >strong> (modelled on the <a href="/en/JavaScript/Reference/Global
 >_Objects/JSON" title="en/JavaScript/Reference/Global_Objects/JSON
 >"><code>JSON</code></a> global object), skip to the <a href="#App
 >endix.3A_a_complete.2C_bidirectional.2C_JXON_library" title="A co
 >mplete JXON library">dedicated paragraph</a> (but please read the
 > <a href="#const_compatibility" title="#const_compatibility">note
 > about the <code>const</code> statement compatibility</a>).
n11      <strong>Note:</strong> If you are interested to address onln
>y some parts of an XML document (and are not starting in JavaScri 
>pt/JSON for templating purposes), use <a href="/en/XPath" title=" 
>en/XPath">XPath</a> instead of converting the whole document into 
> JSON! 
12    </div>
13    <p>
14      In this article we will show how to convert a parsed XML {{
> domxref("document") }} (i.e. an instance of <a href="http://www. 
>w3.org/TR/DOM-Level-2-Core/core.html#i-Document"><code>Document</ 
>code></a>) to a JavaScript Object tree (i.e. a tree of nested ins 
>tances of <a href="/en/JavaScript/Reference/Global_Objects/Object 
>" title="en/JavaScript/Reference/Global_Objects/Object"><code>Obj 
>ect</code></a>) and viceversa, with some different algorithms. It 
> could be useful to read the&nbsp;<a href="/en/XML_Introduction"  
>title="en/XML_Introduction">XML introduction article</a> first. 
15    </p>
16    <p>
17      If you want <strong>a complete bidirectional JXON library</
>strong> (modelled on the <a href="/en/JavaScript/Reference/Global 
>_Objects/JSON" title="en/JavaScript/Reference/Global_Objects/JSON 
>"><code>JSON</code></a> global object), skip to the <a href="#App 
>endix.3A_a_complete.2C_bidirectional.2C_JXON_library" title="A co 
>mplete JXON library">dedicated paragraph</a> (but please read the 
> <a href="#const_compatibility" title="#const_compatibility">note 
> about the <code>const</code> statement compatibility</a>). 
18    </p>
19    <div class="note">
20      <strong>Note:</strong> Despite the term JXON suggesting "lo17      <strong>Note:</strong> Despite the term JXON suggesting "lo
>ssless" conversions, the techniques below are not actually lossle>ssless" conversions, the techniques below are not actually lossle
>ss if one needs to preserve ordering of elements, as is common wi>ss if one needs to preserve ordering of elements, as is common wi
>th many XML dialects (including of course XHTML). The ECMAScript >th many XML dialects (including of course XHTML). The ECMAScript 
>standard (JavaScript) indicates that object iteration order is im>standard (JavaScript) indicates that object iteration order is im
>plementation dependent, and browser implementations have increasi>plementation dependent, and browser implementations have increasi
>ngly abandoned the first-in-first-out iteration order for optimiz>ngly abandoned the first-in-first-out iteration order for optimiz
>ation purposes (and it was never fully reliable across browsers a>ation purposes (and it was never fully reliable across browsers a
>nyways, e.g., when properties were deleted in IE objects). One co>nyways, e.g., when properties were deleted in IE objects). One co
>nversion method which is lossless for element order, as it relies>nversion method which is lossless for element order, as it relies
> on arrays, is <a href="http://www.jsonml.org/" title="http://www> on arrays, is <a href="http://www.jsonml.org/" title="http://www
>.jsonml.org/">JsonML</a>.>.jsonml.org/">JsonML</a>.<br>
18      → If you are interested to address only some parts of an XM
 >L document (and are not starting in JavaScript/JSON for templatin
 >g purposes), use <a href="/en/XPath" title="en/XPath">XPath</a> i
 >nstead of converting the whole document into JSON.
n1166|*|  JXON framework - Copyleft by Mozilla Developer Networkn1164|*|  JXON framework - Copyleft 2011 by Mozilla Developer Network
n1304 n
1305 
1306var myObject = JXON.build(doc);
1307// we got our javascript object! try: alert(JSON.stringify(myObje
>ct)); 
1308 
1309var newDoc = JXON.unbuild(myObject);
1310// we got our Document instance! try: alert((new XMLSerializer())
>.serializeToString(newDoc)); 
nn1343    <p>
1344      Example:
1345    </p>
1346    <pre class="brush: js">
1347var myObject = JXON.build(doc);
1348// we got our javascript object! try: alert(JSON.stringify(myObje
 >ct));
1349 
1350var newDoc = JXON.unbuild(myObject);
1351// we got our Document instance! try: alert((new XMLSerializer())
 >.serializeToString(newDoc));
1352</pre>
n1356      <code>JXON.build(<em>document</em>[, <em>verbosity</em>[, <n1357      <code>JXON.build(<a href="#JXON.build.document" title="JXON
>em>freeze</em>[, <em>nesteAttributes</em>]]])</code>>.build – @document"><em>document</em></a>[, <a href="#JXON.build.
 >verbosity" title="JXON.build – @verbosity"><em>verbosity</em></a>
 >[, <a href="#JXON.build.freeze" title="JXON.build – @freeze"><em>
 >freeze</em></a>[, <a href="#JXON.build.nesteAttributes" title="JX
 >ON.build – @nesteAttributes"><em>nesteAttributes</em></a>]]])</co
 >de>
n1369        <code>document</code>n1370        <code id="JXON.build.document">document</code>
n1375        <code>verbosity</code>n1376        <code id="JXON.build.verbosity">verbosity</code>
n1381        <code>freeze</code>n1382        <code id="JXON.build.freeze">freeze</code>
n1387        <code>nesteAttributes</code>n1388        <code id="JXON.build.nesteAttributes">nesteAttributes</co
 >de>
n1397      <code>JXON.unbuild(<em>objTree</em>)</code>n1398      <code>JXON.unbuild(<a href="#JXON.unbuild.objTree" title="J
 >XON.unbuild – @objTree"><em>objTree</em></a>)</code>
t1410        <code>objTree</code>t1411        <code id="JXON.unbuild.objTree">objTree</code>

Back to History