give it a try with PDATA instead of CDATA and see what happns "Ashley Sheridan" <ash@xxxxxxxxxxxxxxxxxxxx> wrote in message news:1252512252.2961.40.camel@xxxxxxxxxxxx > On Wed, 2009-09-09 at 16:51 +0100, Matthew Croud wrote: > > On 9 Sep 2009, at 16:37, Ashley Sheridan wrote: > > > > > On Wed, 2009-09-09 at 15:14 +0100, Matthew Croud wrote: > > >> On 9 Sep 2009, at 15:09, Ashley Sheridan wrote: > > >> > > >>> On Wed, 2009-09-09 at 14:46 +0100, Matthew Croud wrote: > > >>>> On 9 Sep 2009, at 14:36, Bob McConnell wrote: > > >>>> > > >>>>> From: Bastien Koert > > >>>>>> On Wed, Sep 9, 2009 at 5:27 AM, Matthew > > >>>>>> Croud<matt@xxxxxxxxxxxxxxxxxx> wrote: > > >>>>>>> > > >>>>>>> Hiya, > > >>>>>>> I'm writing an app that let's my client upload images, the image > > >>>>>>> html code > > >>>>>>> is added to an XML file. > > >>>>>>> Take a look at the <image> element below: > > >>>>>>> > > >>>>>>> <item Code="e1022"> > > >>>>>>> <code>e1022</code> > > >>>>>>> <image><![CDATA[<img src="uploads/image2.jpg" alt="Homepage > > >>>>>>> Image" > > >>>>>>> width="124" height="70" />]]></image> > > >>>>>>> <name>Blue Ski Trousers</name> > > >>>>>>> <price>8.99</price> > > >>>>>>> </item> > > >>>>>>> > > >>>>>>> Now, whenever PHP writes this to the XML files, it turns the < > > >>>>>>> and > > >>>>>>>> into > > >>>>>>> < and > . which means it does not display on the webpage. > > >>>>>>> How can I > > >>>>>>> prevent this from happening ? > > >>>>>>> > > >>>>>> > > >>>>>> str_replace? > > >>>>>> > > >>>>> > > >>>>> Does the xml string get passed to htmlentities() or a similar > > >>>>> function before it is sent to the browser? That would explain the > > >>>>> substitutions. I saw an xmlentities() variation mentioned > > >>>>> somewhere. > > >>>>> > > >>>>> Bob McConnell > > >>>>> > > >>>>> -- > > >>>>> PHP General Mailing List (http://www.php.net/) > > >>>>> To unsubscribe, visit: http://www.php.net/unsub.php > > >>>>> > > >>>> > > >>>> > > >>>> Hi Bob, > > >>>> > > >>>> Nope the string doesn't get passed into any function. > > >>>> Here is the XML: > > >>>> _________________________________________________________________ > > >>>> > > >>>> <?xml version="1.0" encoding="UTF-8"?> > > >>>> <clothes> > > >>>> > > >>>> <item Code="e1021"> > > >>>> <code>e1021</code> > > >>>> <image><![CDATA[<img src="uploads/image1.jpg" alt="Homepage > > >>>> Image" width="124" height="70" border="1" > > >>>> onclick="MM_openBrWindow('uploads/ > > >>>> image1.jpg','Preview','width=680,height=520')" />]]></image> > > >>>> <name>Red Jacket</name> > > >>>> <desc>An adult sized red jacket</desc> > > >>>> <size>adult</size> > > >>>> <price>12.99</price> > > >>>> </item> > > >>>> > > >>>> <item Code="e1022"> > > >>>> <code>e1022</code> > > >>>> <image><![CDATA[<img src="uploads/image2.jpg" alt="Homepage > > >>>> Image" width="124" height="70" border="1" > > >>>> onclick="MM_openBrWindow('uploads/ > > >>>> image2.jpg','Preview','width=680,height=520')" />]]></image> > > >>>> <name>Blue Ski Trousers</name> > > >>>> <desc>A pair of Blue Ski Trousers</desc> > > >>>> <size>child</size> > > >>>> <price>8.99</price> > > >>>> </item> > > >>>> > > >>>> </clothes> > > >>>> > > >>>> ________________________________________________________________ > > >>>> > > >>>> Now the image tags I have written here I have done manually, but > > >>>> when > > >>>> I use PHP using DOM they come out like this (note the image > > >>>> element): > > >>>> > > >>>> <item Code="e1024"> > > >>>> <code>e1024</code> > > >>>> <image><![CDATA[<img src="uploads/image4.jpg" alt="Homepage > > >>>> Image" width="124" height="70" border="1" > > >>>> onclick="MM_openBrWindow('uploads/ > > >>>> image4.jpg','Preview','width=680,height=520')" />]]></image> > > >>>> <name>orange top</name> > > >>>> <desc>an orange jacket</desc> > > >>>> <size>large</size> > > >>>> <price>14.50</price> > > >>>> </item> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> Matthew Croud > > >>>> Studio > > >>>> > > >>>> Obvious Print Solutions Limited > > >>>> Unit 3 Abbeygate Court > > >>>> Stockett Lane > > >>>> Maidstone > > >>>> Kent > > >>>> ME15 0PP > > >>>> > > >>>> T | 0845 094 9704 > > >>>> F | 0845 094 9705 > > >>>> www.obviousprint.com > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>> I've not experienced this with using any DOM functions, but if we > > >>> can > > >>> see your code it might help us. > > >>> > > >>> Thanks, > > >>> Ash > > >>> http://www.ashleysheridan.co.uk > > >>> > > >>> > > >>> > > >>> > > >>> -- > > >>> PHP General Mailing List (http://www.php.net/) > > >>> To unsubscribe, visit: http://www.php.net/unsub.php > > >>> > > >> > > >> > > >> > > >> > > >> Well i'll pop the PHP down here, i'll trim it as much as i can: > > >> ________________________________________________________________________ > > >> > > >> $code = $_POST['code']; > > >> $name = $_POST['name']; > > >> $desc = $_POST['desc']; > > >> $size = $_POST['size']; > > >> $price = $_POST['price']; > > >> > > >> > > >> #load an XML document into the DOM > > >> > > >> $dom = new DomDocument(); > > >> $dom -> load("items.xml"); > > >> > > >> #create elements > > >> > > >> $Xitem = $dom -> createElement("item"); > > >> $Xcode = $dom -> createElement("code"); > > >> $Ximage = $dom -> createElement("image"); > > >> $Xname = $dom -> createElement("name"); > > >> $Xdesc = $dom -> createElement("desc"); > > >> $Xsize = $dom -> createElement("size"); > > >> $Xprice = $dom -> createElement("price"); > > >> > > >> #create text nodes > > >> > > >> $Xcodetext = $dom -> createTextNode($code); > > >> $Ximagetext = $dom -> createTextNode( "<![CDATA[<img src=\"uploads/ > > >> $UploadName\" alt=\"Homepage Image\" width=\"124\" height=\"70\" > > >> border=\"1\" onclick=\"MM_openBrWindow('uploads/ > > >> $UploadName','Preview','width=680,height=520')\" />]]>" ); > > >> $Xnametext = $dom -> createTextNode($name); > > >> $Xdesctext = $dom -> createTextNode($desc); > > >> $Xsizetext = $dom -> createTextNode($size); > > >> $Xpricetext = $dom -> createTextNode($price); > > >> > > >> #append the text nodes to the inner nested elements > > >> > > >> $Xcode -> appendChild($Xcodetext); > > >> $Ximage -> appendChild($Ximagetext); > > >> $Xname -> appendChild($Xnametext); > > >> $Xdesc -> appendChild($Xdesctext); > > >> $Xsize -> appendChild($Xsizetext); > > >> $Xprice -> appendChild($Xpricetext); > > >> > > >> #append the inner nested elements to the <item> element > > >> > > >> $Xitem -> appendChild($Xcode); > > >> $Xitem -> appendChild($Ximage); > > >> $Xitem -> appendChild($Xname); > > >> $Xitem -> appendChild($Xdesc); > > >> $Xitem -> appendChild($Xsize); > > >> $Xitem -> appendChild($Xprice); > > >> $Xitem -> setAttribute("Code",$code); > > >> > > >> #append the <title> element to the root element > > >> > > >> $dom -> documentElement -> appendChild($Xitem); > > >> > > >> #create a new enlarged xml document > > >> > > >> $dom -> save("items.xml"); > > >> > > >> _____________________________________________________ > > > It looks like it's because you are creating an image object by > > > appending > > > a text node inside CDATA to it. My guess is that a text node will have > > > the contents automatically made 'safe' for the XML entities which > > > are <, > > >> , &, etc. > > > > > > Why are you appending the child item like this? What's wrong with > > > adding > > > it as a proper object, attributes and all? > > > > > > Thanks, > > > Ash > > > http://www.ashleysheridan.co.uk > > > > > > > > > > > > > > > Hi Ash, > > > > Thanks for getting back to me, > > In all honesty this method is what's implemented in the course book > > i've been following. > > > > I been using XML longer and i've never had this issue using image tags > > before and getting the output I expected. > > Is there a way around this safety mechanism ? Otherwise i'll have to > > think of another way of doing this. > > > > Cheers. > > > > Just create the image tag using the same methods as you're creating the > other nodes. So the image object would contain several attribute nodes, > but would have no regular child nodes of its own. > > Thanks, > Ash > http://www.ashleysheridan.co.uk > > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php