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

Reply via email to