jamesflowers Posted July 17, 2014 Share Posted July 17, 2014 I have the code below , and when I run it on my website , it returns a XML Parsing Error: not well-formed error , which says it has a problem reading the & i think please see http://www.jamesflowersreports.com/php/xml2.php I think it has something to wiht the str_replace as when I change the $row['customerName'] . "</Name>\n"; to $row['customerNumber'] . "</Name>\n"; as a test it works fine , I understand XML cant handle special characters , how would prevent this happening? code as below $query = "SELECT * FROM customers";$resultID = mysql_query($query, $linkID) or die("Data not found.");$xml_output = "<?xml version=\"1.0\"?>\n";$xml_output .= "<entries>\n";for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){ $row = mysql_fetch_assoc($resultID); $xml_output .= "\t<entry>\n"; $xml_output .= "\t\t<Name>" . $row['customerName'] . "</Name>\n"; // Escaping illegal characters $row['text'] = str_replace("&", "&", $row['text']); $row['text'] = str_replace("<", "<", $row['text']); $row['text'] = str_replace(">", ">", $row['text']); $row['text'] = str_replace("\"", """, $row['text']); $xml_output.= "\t\t<Number>" . $row['customerNumber'] . "</Number>\n"; $xml_output.= "\t</entry>\n";}$xml_output .= "</entries>";echo $xml_output; regards James Quote Link to comment Share on other sites More sharing options...
Barand Posted July 17, 2014 Share Posted July 17, 2014 You could always use CDATA elements cust.xml <?xml version="1.0" encoding="utf-8" ?> <customers> <Customer> <Number>1234</Number> <Name><![CDATA[<i>Proctor & Gample</i>]]></Name> <Text><![CDATA[<strong>Soap Manufacturers</strong>]]></Text> </Customer> <Customer> <Number>1235</Number> <Name><![CDATA[<i>Fleecem & Runn</i>]]></Name> <Text><![CDATA[<strong>Financial Advisors</strong>]]></Text> </Customer> </customers> code $xml = simplexml_load_file('cust.xml'); foreach ($xml->Customer as $c) { echo $c->Number . '<br>'; echo $c->Name . '<br>'; echo $c->Text . '<br><br>'; } output Quote Link to comment Share on other sites More sharing options...
jamesflowers Posted July 17, 2014 Author Share Posted July 17, 2014 this is creating the XML data from a DB before hand , I dont have cust.xml already . Thanks Quote Link to comment Share on other sites More sharing options...
Barand Posted July 17, 2014 Share Posted July 17, 2014 Yes, I know. I am suggesting you create it using CDATA. The above is an example of what it will look like, in an effort to assist you, and also to demonstrate that it can hold special characters. 1 Quote Link to comment Share on other sites More sharing options...
jamesflowers Posted July 22, 2014 Author Share Posted July 22, 2014 cool , thanks I have noticed it doesnt catch eacute's are these not recognised by CDATA ? thanks Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.