i’m trying to parse a xml string with NSXMLParser which i created in PHP.
My PHP sript is:
$doc = new DomDocument('1.0');
//$doc->preserveWhiteSpace=false;
$root = $doc->createElement("root");
$root = $doc->appendChild($root);
$child = $doc->createElement("child");
$child = $root->appendChild($child);
$value = $doc->createTextNode("testvar");
$value = $child->appendChild($value);
$xml_string = $doc->saveXML();
print $xml_string;
If i open the page in the browser it shows me ‘testvar’ like it should.
Showing the source it shows me that there’re several whitespaces:
begin ->| <?xml version="1.0"?>
<root><child>testvar</child></root>
|<--end
Setting preserveWhitespace to false doesn’t change anything.
So i tried with regex in php:
$xml_string1 = preg_replace("/\s+</","<",$xml_string);
$xml_string2 = preg_replace("/>\s+/",">",$xml_string1);
print $xml_string2;
This removes the \n and brings me to this
begin-->| <?xml version="1.0"?><root><child>testvar</child></root> |<--end
In the browser it always shows the wanted result: testvar
On the iphone i get following error:
**NSXMLParserErrorDomain Code = 64, Operation could not be completed.**
I don’t know whats the problem with the xml, i receive it correctly like under This removes the \n ….
I tried to debug but after starting the parser with [parser parse] none of the delegate functions is called (yes, i set the delegate) exept the parserError.
As there’re still spaces before and after the xml may this is the reason, but i can’t get them out.
In my application on the iPhone i tried different encodings, UTF8 and ASCII.
I also tried to convert the received data to a string, called
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet
and converted back.
I also set the following:
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
I don’t know what i’m doing wrong, please help.
Thanks in advance.
Thanks for the answer, helped me continuing to search for the right thing. I don’t really want to delete my XML declaration as I have to be conforming to standards. I found the answer after wasting 1.5 days. PHP also uses a similar notation:
<?php ... ?>. Note that the final php?>should be omitted from all PHP code files—modules, includes, etc. The closing delimiter is optional in PHP (but not in XML), and removing it helps prevent unwanted white space at the end of files which can cause problems. I wasn’t aware of that, after removing the closing delimiter it works just fine.