$address_element = new SimpleXMLElement($address_dom);
$current_uni->addChild('address', $address_element);
This gives me the following error and warnings:
Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Extra content at the end of the document in ***/save_location.php on line 28
Warning: SimpleXMLElement::__construct(): Λάρισα41500 in ***/save_location.php on line 28
Warning: SimpleXMLElement::__construct(): ^ in ***/save_location.php on line 28
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in ***/save_location.php:28 Stack trace: #0 ***/save_location.php(28): SimpleXMLElement->__construct('
Any ideas? It's a part of my thesis, I am really stuck and nervous cause I still have a lot to do
Hmm.... Based on the error and odd looking characters it looks like encoding issues in one or more of those $_POST variables, i.e. you need to do one of two things -- convert the strings to their proper html entities or wrap each $_POST with the CDATA sequence so the parser skips encoding of that text.
Solution 1:
Just pass each $_POST variable to the function, i.e.
PHP Code:
$address_dom = '<street>'.XMLEntities($_POST["street"]).'</street>'; // example
See next post with attached source - the forum converts & to its htmlentities using the code/html/php tags or simply pasting as plain text.
Solution 2:
A CDATA section starts with "<![CDATA[" and ends with "]]>"
Although personally I like the first solution - it doesn't pass the burden of properly decoding to the receiving end and ends up with cleaner XML. But to each their own.
This is my best guess at this point! If this doesn't help, let me know.
-jim
Last edited by SrWebDeveloper; 01-09-2010 at 08:41 AM.
Reason: fixed ampersand issue
Hello Jim and thanks for the prompt reply. I'm gonna try it with htmlspecialchars() first, actually the characters are not weird, the data in the xml file is just in Greek and I don't think it would be wise changing them to values like ‘. I am using UTF-8 encoding and everything is running smoothly for now. I'll let you know how that went.
Actually that did not work at all. I still have a problem. The thing is, I have previously written other lines of code with the same way of parsing the XML data without a problem. I think the problem lies in the point where i want to add a second level of a child element.
My XML file structure consists of "Placemark" elements with this structure:
As you can see the name element which i parse earlier in the code is in Greek as well and I do not get an error for that. I need to find a different way to add the children elements which have children of their own (Same problem happens with the <links> element.
I'm stuck :/ Do you see something wrong in my original logic of the construction of the (grand)children?
The original warnings/error shows SimpleXMLElement choking on the city and postal code nodes which it apparently thought was a single node. I can only assume you fixed that error since then since the current XML validates as well formed.
It might turn out to be weirdness with SimpleXML or the editor you're using embedding characters the parser isn't expecting. I'd offer more help if your recent code didn't validate!
I already have <?xml version="1.0" encoding="UTF-8"?> in the beginning of the XML file (Greek programmers prefer UTF-8, Greek 8859-7 does not work well usually).
I didn't change the XML file, its the original, it validates perfectly, yet it gives the error you saw. I guess now that as other functions, the ones used here do not work well with Greek characters (like the ones which convert to upper case etc), but it was working perfectly with reading so it shouldn't be that. When there is a problem with Greek characters PHP usually changes them to Ararbic, Russian or whatever, but it always inputs or outputs the data.
What I didn't know was that you could add an empty child. So by adding <address> first and then adding children to <address> fixed everything. I will start a new post with my next problem which is deleting elements.
Thanks a lot, your help was a big part of the solution, it was the characters but it was PHP's fault, not the encoding's
Bookmarks