Edit report at http://bugs.php.net/bug.php?id=48049&edit=1
ID: 48049 Updated by: sala...@php.net Reported by: nickmaccarthy at gmail dot com Summary: Will not parse tags with certain chars -Status: No Feedback +Status: Bogus Type: Bug Package: SimpleXML related Operating System: Ubuntu 8.04 PHP Version: 5.2.9 Block user comment: N New Comment: The latest example script offered by nickmaccarthy works as expected. Nick, to see that the XML is received properly use: echo $xml->saveXML(); As for the original bug report, the reporter did not how to work with namespaces. This information is available in the documentation, see SimpleXMLElement::children(). Previous Comments: ------------------------------------------------------------------------ [2010-10-22 01:17:10] nickmaccarthy at gmail dot com Example Script was provided with the original request, but I will add another one. <?php $ipAddr = "209.240.56.78"; $data = file_get_contents("http://api.hostip.info/?ip=".$ipAddr); $xml = @simplexml_load_string($data); print_r($xml); ?> You will notice that you will get no results from the print_r of $xml and there is no error message give. This was tested again with php version 5.3.2. ------------------------------------------------------------------------ [2009-05-02 01:00:00] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2009-04-24 13:48:30] j...@php.net Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2009-04-22 14:44:53] nickmaccarthy at gmail dot com Description: ------------ Note: SimpleXML has issues parsing tags with ":" in it. GML tags for example are formatted like: <gml:name>Foo</gml:name>. In the SimpleXML Documentation, it states to put tags between {} that could contain chars. that could break the parser, like "-" for example. In our example below: $xml->firstLayer->secondLayer->{'gml:name'} will not be parsed by SimpleXML, but SimpleXML will NOT throw an error or lead you to believe that it has NOT parsed it. I was parsing output from hostip.info which uses XML as an output with GML. Here is an example of the XML I was working with when I cam a Reproduce code: --------------- --- >From manual page: book.simplexml --- $ipAddr = "209.240.56.78"; $data = file_get_contents("http://api.hostip.info/?ip=".$ipAddr); $xml = @simplexml_load_string(str_replace(":", "_", $data)); //SimpleXML has issues parsing the ":", replacing it with underscore to make this work. $city = $xml->gml_featureMember->Hostip->gml_name; $country = $xml->gml_featureMember->Hostip->countryName; $country_abbrev = $xml->gml_featureMember->Hostip->countryAbbrev; $lat_long = $xml->gml_featureMember->Hostip->ipLocation->gml_PointProperty->gml_Point->gml_coordinates; echo $city Expected result: ---------------- This is what XML looks like coming from the site: <HostipLookupResultSet version="1.0.0" xmlns="http://www.hostip.info/api" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hostip.info/api/hostip-1.0.0.xsd"> <gml:description>This is the Hostip Lookup Service</gml:description> <gml:name>hostip</gml:name> <gml:boundedBy> <gml:Null>inapplicable</gml:Null> </gml:boundedBy> <gml:featureMember> <Hostip> <gml:name>(Unknown City?)</gml:name> <countryName>(Unknown Country?)</countryName> <countryAbbrev>XX</countryAbbrev> <!-- Co-ordinates are unavailable --> </Hostip> </gml:featureMember> </HostipLookupResultSet> Based on my echo of $city, I would expect to see: Providence RI Actual result: -------------- Blank - nothing. SimpleXML will not throw an error if it runs into an issue parsing anything with a ":" in the tag. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=48049&edit=1