<div dir="ltr">A quick experiment on the firefox console:<br><div><br><span style="font-family:monospace,monospace">> str = "A" + "\n" + "B";<br>< "A<br>B"<br>> str[0]<br>< "A"<br>> str[1]<br>< "<br>"<br></span><br></div><div>perhaps expected that unquoted escaped newline gets unescaped during concatenation.<br><br></div><div>Here with quoted escaped newline:<br></div><div><br><span style="font-family:monospace,monospace">> str = "A" + "'\n'" + "B";<br>< "A'<br>'B"<br>> str[1]<br>< "'"<br>> str[2]<br>< "<br>"</span><br><br></div><div>Perhaps unexpected that the quoted escaped newline still gets unescaped during concatenation.<br><br></div><div>So the culprit seems to be string parsing in javascript, and not necessarily DOMParser.<br></div><div><br></div><div>It therefore seems correct and necessary to escape also the back slash to prevent js parsing as you are doing now: \\n<br><br></div><div>-Andreas<br></div><div><br></div><div>PS: Does MS Windows require the return character \r in addition to \n for some system functions ? If not, it may be better to never generate the \r character during any conversion (and perhaps globally strip it right after reading input).<br></div><div><br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 28, 2017 at 3:08 AM, John Carlson <span dir="ltr"><<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">I may throw a few more \\ in for good measure.  Idk.</div><div class="gmail_extra"><br><div class="gmail_quote">On Feb 27, 2017 9:09 PM,  <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div link="blue" vlink="#954F72" lang="EN-US"><div class="m_-3949661302134054820m_5651566873279945384WordSection1"><p class="MsoNormal">I was wrong.  It was in my serverside code.  So now, the serverside code looks like this:</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">        X3DJSONLD.setCDATACreateFuncti<wbr>on(function(document, element, str) {</p><p class="MsoNormal">                // for script nodes</p><p class="MsoNormal">                var child = document.createCDATASection(st<wbr>r.replace(/\n'/g, "\\n'"));</p><p class="MsoNormal">                element.appendChild(child);</p><p class="MsoNormal">        });</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">FYI for those creating CDATA sections from JSON on the serverside.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">John</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank">Mail</a> for Windows 10</p><p class="MsoNormal"><u></u> <u></u></p><div style="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" target="_blank">yottzumm@gmail.com</a><br><b>Sent: </b>Monday, February 27, 2017 8:46 PM<br><b>To: </b><a href="mailto:andreasplesch@gmail.com" target="_blank">Andreas Plesch</a>; <a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>flaw in CDATACreateFunction in X3DJSONLD (from Andreas Plesch)</p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">function CDATACreateFunction(document, element, str) {<u></u><u></u></p><p class="MsoNormal">        var domParser = new DOMParser();<u></u><u></u></p><p class="MsoNormal">        var cdataStr = '<script> <![CDATA[ ' + str + ' ]]> </script>'; // has to be wrapped into an element<u></u><u></u></p><p class="MsoNormal">        var scriptDoc = domParser .parseFromString (cdataStr, 'application/xml');<u></u><u></u></p><p class="MsoNormal">        var cdata = scriptDoc .children[0] .childNodes[1]; // space after script is childNode[0]<u></u><u></u></p><p class="MsoNormal">        element .appendChild(cdata);<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">If calling CDATACreateFunction(document, element, object[key].join("\r\n")+"\r\n<wbr>");  like this, you may run into some difficulty when the DOM gets written out to XML or perhaps placed in a web page.  Namly, this:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">"#sourceText":[<u></u><u></u></p><p class="MsoNormal">"ecmascript:",<u></u><u></u></p><p class="MsoNormal">"function set_position (value)",<u></u><u></u></p><p class="MsoNormal">"{",<u></u><u></u></p><p class="MsoNormal">"\tholdPosition=value;",<u></u><u></u></p><p class="MsoNormal">"}",<u></u><u></u></p><p class="MsoNormal">"function set_rotation (value)",<u></u><u></u></p><p class="MsoNormal">"{",<u></u><u></u></p><p class="MsoNormal">"\tBrowser.print ('Internal position=' + holdPosition.toString() + ' , internal rotation=' + value.toString() + '\n');",<u></u><u></u></p><p class="MsoNormal">"}"<u></u><u></u></p><p class="MsoNormal">]<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Gets translated into this in XML<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><![CDATA[ecmascript:<u></u><u></u></p><p class="MsoNormal">function set_position (value)<u></u><u></u></p><p class="MsoNormal">{<u></u><u></u></p><p class="MsoNormal">        holdPosition=value;<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal">function set_rotation (value)<u></u><u></u></p><p class="MsoNormal">{<u></u><u></u></p><p class="MsoNormal">        Browser.print ('Internal position=' + holdPosition.toString() + ' , internal rotation=' + value.toString() + '<u></u><u></u></p><p class="MsoNormal">');<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal">]]><u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Note that the \n got converted into a newline.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I am working on this issue.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">John<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div></blockquote></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Andreas Plesch<br>39 Barbara Rd.<br>Waltham, MA 02453</div>
</div>