<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>I found and interesting def on stackoverflow (not the marked answer). https://stackoverflow.com/questions/7684333/converting-xml-to-dictionary-using-elementtree</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here is the results it produced with HelloWorld.x3d (below).  I suggest the following changes:   arrays for MF fields and vectors, that is, we should use X3DUOM info to enhance this.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This is nearly X3D JSON except for the quotes and the arrays and children fields.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>{'X3D': {'head': {'meta': [{'@content': 'HelloWorld.x3d', '@name': 'title'}, {'@content': 'Simple X3D scene example: Hello World!', '@name': 'description'}, {'@content': '30 October 2000', '@name': 'created'}, {'@content': '14 April 2017', '@name': 'modified'}, {'@content': 'Don Brutzman', '@name': 'creator'}, {'@content': 'HelloWorld.tall.png', '@name': 'Image'}, {'@content': 'http://en.wikipedia.org/wiki/Hello_world', '@name': 'reference'}, {'@content': 'https://en.wikipedia.org/wiki/Hello#.22Hello.2C_World.22_computer_program', '@name': 'reference'}, {'@content': 'https://en.wikipedia.org/wiki/"Hello,_World!"_program', '@name': 'reference'}, {'@content': 'http://en.wikibooks.org/w/index.php?title=Computer_Programming/Hello_world', '@name': 'reference'}, {'@content': 'http://www.HelloWorldExample.net', '@name': 'reference'}, {'@content': 'http://www.web3D.org', '@name': 'reference'}, {'@content': 'http://www.web3d.org/realtime-3d/news/internationalization-x3d', '@name': 'reference'}, {'@content': 'http://www.web3d.org/x3d/content/examples/HelloWorld.x3d', '@name': 'reference'}, {'@content': 'http://X3dGraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes', '@name': 'reference'}, {'@content': 'http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.x3d', '@name': 'identifier'}, {'@content': 'http://www.web3d.org/x3d/content/examples/license.html', '@name': 'license'}, {'@content': 'X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit', '@name': 'generator'}, {'@content': 'HelloWorld.wrl', '@name': 'reference'}, {'@content': 'HelloWorld.x3dv', '@name': 'reference'}, {'@content': 'HelloWorld.x3db', '@name': 'reference'}, {'@content': 'HelloWorld.xhtml', '@name': 'reference'}, {'@content': 'HelloWorld.json', '@name': 'reference'}]}, 'Scene': {'WorldInfo': {'@title': 'Hello world!'}, 'Group': {'Viewpoint': {'@DEF': 'ViewUpClose', '@centerOfRotation': '0 -1 0', '@description': 'Hello world!', '@position': '0 -1 7'}, 'Transform': [{'Shape': {'Sphere': None, 'Appearance': {'Material': {'@DEF': 'MaterialLightBlue', '@diffuseColor': '0.1 0.5 1'}, 'ImageTexture': {'@DEF': 'ImageCloudlessEarth', '@url': '"earth-topo.png" "earth-topo.jpg" "earth-topo-small.gif" "http://www.web3d.org/x3d/content/examples/Basic/earth-topo.png" "http://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg" "http://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif"'}}}, '@rotation': '0 1 0 3'}, {'Shape': {'Text': {'FontStyle': {'@justify': '"MIDDLE" "MIDDLE"'}, '@DEF': 'TextMessage', '@string': '"Hello" "world!"'}, 'Appearance': {'Material': {'@USE': 'MaterialLightBlue'}}}, '@translation': '0 -2 0'}]}}, '@profile': 'Immersive', '@version': '3.3', '@{http://www.w3.org/2001/XMLSchema-instance}noNamespaceSchemaLocation': 'http://www.web3d.org/specifications/x3d-3.3.xsd'}}</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>What else should we consider in this python dict encoding example? If python x3d SAI can produce an XML string, I can convert it to a dict for output.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The code is available from me on request.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Should we consider loading a dict instead of a DOM tree?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>What can we learn from 36 lines of code that we can apply to our serializers and converters?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Wednesday, July 24, 2019 2:14 PM<br><b>To: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a>; <a href="mailto:lepeitso@nps.edu">Peitso, Loren (CIV)</a>; <a href="mailto:brutzman@nps.edu">Don Brutzman</a>; <a href="mailto:aono@tut.jp">aono@tut.jp</a>; <a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a>; <a href="mailto:myeongwonlee@gmail.com">myeongwonlee@gmail.com</a>; <a href="mailto:blhelfer@gmail.com">blhelfer@gmail.com</a><br><b>Subject: </b>RE: Proposal: Language-specific declarative encodings for JavaandPython, Call for research into C/C++/C#</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>More thoughts.  Can the new Python API that Don is writing produce a dict?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Wednesday, July 24, 2019 1:04 PM<br><b>To: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a>; <a href="mailto:lepeitso@nps.edu">Peitso, Loren (CIV)</a>; <a href="mailto:brutzman@nps.edu">Don Brutzman</a>; <a href="mailto:aono@tut.jp">aono@tut.jp</a>; <a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a>; <a href="mailto:myeongwonlee@gmail.com">myeongwonlee@gmail.com</a>; <a href="mailto:blhelfer@gmail.com">blhelfer@gmail.com</a><br><b>Subject: </b>Proposal: Language-specific declarative encodings for Java andPython, Call for research into C/C++/C#<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In this message, I am proposing 2 new X3D encodings, specifically Python dict and Java Object array encodings.  These provide relatively library type-free  declarative encodings in specific languages, so that authors have a choice to use their own imperative language to specify a compiled scenegraph in a declarative way without type explosion and instead of bringing in an additional non-native language like XML or JSON.   It may be possible to duplicate this feature in C,C# and C++, but that research has not been done to my knowledge. I have converted XML to Java Object arrays and back, so I know that’s feasible.  My understanding of Python dicts is that they are like JSON, so that should be doable as well.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I can generate some “Hello, World” demonstration examples if people are interested.  I will base these new encodings on my DOM (XML for Leonard’s sake) -> JSON converter, DOM2JSONSerializer.js or Python’s DOM API  (If there’s a DOM-like API),  I think, and will be placed under the “X3DLD” banner as I move to more generic loaders than JSON -> DOM.  Specifically, I want to develop loaders independent of JSON but in the same vein as JSON until the X3D JSON is standardized.<o:p></o:p></p><p class=MsoNormal>Your feedback is welcome!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Also, here is a call for research into C/C#/C++ native declarative encodings (non-SAI).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I propose that I start on the Python dict encoding first.   Should I use JavaScript or Python as a base language?  Can someone point me at Python DOM?  Thanks!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I also propose that X3DJSAIL+converters be extended to produce these 2 encodings after a Proof-of-Concept is created in JavaScript or Python.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Someone who wants to create a renderer for these encodings would be a welcome member to team.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Wishing you a SAI-free life,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John Carlson<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>