Hello Ian,<br><br><div><span class="gmail_quote">2006/12/2, Ian Wadham &lt;<a href="mailto:ianw2@optusnet.com.au">ianw2@optusnet.com.au</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2006/12/1, Ian Wadham wrote:<br>&gt; &gt; Burkhard, it is &quot;QDomElement::text()&quot; that drops lower-level<br>&gt; &gt; tags (as documented), not &quot;.toUtf8()&quot;.&nbsp;&nbsp;They never get into the<br>&gt; &gt; QString that QDomElement generates.
<br>Burkhard Lehner wrote:<br>&gt; Ah, I see the point! You have no way to store the characters '&gt;'<br>&gt; and '&lt;' within XML text. But I thought these characters can be<br>&gt; escaped with &quot;&amp;gt;&quot; and &quot;&amp;lt;&quot;, or am I wrong here? Sorry, I'm
<br>&gt; not an XML expert, but at least HTML does it that way.<br>&gt;<br>Um, no ... a QString can have &quot;rich text&quot; in it, which is a subset<br>of HTML but also looks like the inner levels of some XML docs.<br>
See Qt 4.2 doc home page and follow the path &quot;Key Technologies,<br>Rich Text Processing, Supported HTML Subset&quot;.<br><br>For example, in my game-data in XML I might write:<br><br>&lt;Hint&gt;Do &lt;b&gt;not&lt;/b&gt; go up the right hand ladder.&lt;/Hint&gt;
<br><br>If I display the QString &quot;Do &lt;b&gt;not&lt;/b&gt; go up ...&quot; in a QLabel or<br>message box, the word &quot;not&quot; appears in bold font.&nbsp;&nbsp;But when<br>QDomDocument parses the XML it treats the &quot;&lt;b&gt;not&lt;/b&gt;&quot; as an
<br>inner-level XML node (a QDomElement).&nbsp;&nbsp;If you ask for the text()<br>of the &lt;Hint&gt; element, Qt omits the &lt;b&gt; and &lt;/b&gt;, so you lose the<br>bold font effect.</blockquote><div><br>Why don't you just escape the special characters '&lt;' and '&gt;', so the rich text formatting tags no longer look like XML tags?
<br>So, your example would look like that:<br>&lt;Hint&gt;Do &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; go up the right hand ladder.&lt;/Hint&gt;<br><br>Now this is simple text, QDom* doesn't recognize any bold tags as XML tags, and converting it back is simply replacing every &quot;&amp;lt;&quot; with '&lt;' and every &quot;&amp;gt;&quot; with '&gt;'.
<br>Qt already has functions for doing the conversion in either direction. The function &quot;escape&quot; converts a string that contains rich text to a string that has all the characters '&lt;', '&gt;' and '&amp;' escaped by &quot;&amp;lt;&quot;, &quot;&amp;gt;&quot; and &quot;&amp;amp;&quot; respectively. The function &quot;convertFromPlainText&quot; does the opposite and transforms the string back to rich text.
<br>In Qt 3.* these functions are static functions of the class &quot;QStyleSheet&quot;, in Qt 4.* they are global functions in the namespace &quot;Qt&quot;.<br><br>I hope this provides a solution to the problem.<br><br>Bye,
<br>Burkhard<br></div></div>