Ike, thank you I appreciate that :)

I found my fix!  Everywhere I've read, everyone mentions saving data to the xml 
node's XmlText element.

Instead, there is actually an XmlCData element which not only automatically 
adds and strips the CDATA tags, but also allows unescaped HTML to be stored 
without issue.

So where I was doing:

<cfset xmlVar.car.adbody.XmlText = form.addbody>

I needed to be doing:

<cfset xmlVar.car.adbody.XmlCData = form.addbody>



Here's a link from the source (at the bottom):

http://livedocs.adobe.com/coldfusion/7/htmldocs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=ColdFusion_Documentation&file=00001512.htm





>> <cfxml variable="xmlVar">#trim(theQuery'sXMLValue)#</cfxml>
>> 
>> <cfset xmlVar = xmlParse(trim(xmlVar))>
>
>
>You're using one or the other of these, not both together, right? 
>
>Other than that, it sounds less like there's something going wrong with
>the XML than there just being some confusion about how XML works -- or
>at least how it works in ColdFusion. 
>
>Some basics: 
>
><textarea>         <= this is both a node and an element (tag) 
>stuff in textarea  <= this is a text node 
><a href="blah">    <= this is another element node 
>anchor text        <= this is another text node 
>&lt;b&gt;bold      <= this is part of the same text node 
>&lt;/b&gt;         <= again, still the same text node 
></a>               <= closing the 'a' element node 
></textarea>        <= closing the 'textarea' element node 
>
>Now when you create your xml packet originally using this syntax 
>
><car>
>  <price>$4,000</price>
>  <adbody>
>    <![CDATA[ 
>      Wow <b>What a deal!</b> 
>      <ul><li>blah</li></ul>Just Wow!
>    ]]>
>  </adbody>
></car>
>
>You have your document root element (car) with two child elements (price
>and adbody) and each child element contains one text node, and here's
>where I think you're getting tripped up. How that text node in the CDATA
>is formatted isn't really important -- what's important is that it *is*
>a text node. It may be formatted with CDATA - it may be formatted by
>escaping the HTML tags - but either way, it's a single text node. And
>actually once you've put it into the adbody element as a text node, you
>don't really have any control over how it will be formatted when it's
>displayed by a given XML engine and most of them will use character
>entities (escaping) instead of CDATA to represent the string. The reason
>you see the CDATA after your initial creation I'm guessing is because
>you're not parsing the XML prior to the initial insert, you're just
>building it as a flat text string and inserting it, so the XML engine
>isn't getting its hands on it. 
>
>Now, moving on... When you look at it in MySQL you're seeing escaped
>HTML with character entities -- so it's showing you that the content of
>the adbody element is still a string - good, that's the way you want it.
>Then when you later take the XML packet out of MySQL there are several
>different ways you can get at its content within CF and the results will
>look different of course dependant upon how you choose to display it.
>What you really want is just to get your string back out so that it can
>be used in your HTML display. So your use of "xmlVar.car.adbody.XmlText"
>as a variable name to get that string is perfect -- once the XML has
>been parsed, that variable will contain a string with unescaped HTML,
>which is what you want. 
>
>The only time you won't see the unescaped HTML is when you're viewing
>that text node as a text node within the larger XML packet, for example,
>if you use cfdump to display the content of your xmlVar variable. When
>you dump it like that you're asking the server to show you the structure
>of the XML, in which case, what it's showing you is that you have this
>text node in your adbody element that contains these strings like
>"<b>wow</b>" -- it doesn't care what that string is or what you do with
>it after you get it out, its only responsibility is to show you that the
>string contains those characters. So that's also good. 
>
>Lastly, where you're updating the XML packet with a new html adbody
>should also be fine as well, as long as you're not using HTMLEditFormat
>() on the string before inserting it into the packet. For example: 
>
><cfset xmlVar.car.adbody.XmlText = form.addbody> <= good 
>
><cfset xmlVar.car.adbody.XmlText = HTMLEditFormat(form.adbody)> <= bad 
>
>Remember that the only job of the XML packet is to store your string in
>that text node in the adbody element, so when you set the XmlText
>variable this way, ColdFusion already knows that form.adbody is a string
>and it will just store that string in the XmlText exactly as it is so
>that when you later parse the packet and get it back out, you'll have
>exactly the same string coming out, including all the unmolested HTML.
>If you do any kind of editing to the HTML before you set it, then that
>will change the string before being stored and the value you get back
>will be whatever you've changed it to. So if you HTMLEditFormat the
>value before you store it, what you'll get out on the back end after you
>parse the XML later will be escaped HTML. 
>
>Anyway, I hope I've been at least sem-coherent here and that this
>information is somewhat useful to you. :) 
>
>ike
>
>-- 
>s. isaac dealey  ^  new epoch
> isn't it time for a change? 
>     ph: 503.236.3691
>
>http://onTap.riaforge.org/blog 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to 
date
Get the Free Trial
http://ad.doubleclick.net/clk;160198600;22374440;w

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:299043
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

Reply via email to