Re: XML. Prevent < from turning into &lt;

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
> > >>>>>>> &lt; and &gt; . 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>&lt;![CDATA[&lt;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')" /&gt;]]&gt;</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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux