Re: xml/cap problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Aug 21, 2010 at 5:53 PM, Tom Shaw <tshaw@xxxxxxxx> wrote:

> I am trying to decode and encode nws compatible cap xml. An example is at
> the bottom of this post. simplexml_load_file works fine if "cap:" is removed
> before processing. However, if it is not simplexml_load_file does not parse
> the file at all and libxml_get_errors returns no errors.
>
> Any and all help is appreciated.
>
> Tom
>
> <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
> <cap:alert xmlns:cap='http://www.incident.com/cap/1.0'>
> <cap:identifier>NOAA-NWS-ALERTS National
> 2010-08-21T13:26:34-04:00</cap:identifier>
> <cap:sender>w-nws.webmaster@xxxxxxxx</cap:sender>
> <cap:sent>2010-08-21T13:26:34-04:00</cap:sent>
> <cap:status>Actual</cap:status>
> <cap:msgType>Alert</cap:msgType>
> <cap:scope>Public</cap:scope>
> <cap:note>
> Current Watches, Warnings and Advisories for the United States Issued by
> the National Weather Service
> </cap:note>
> <cap:references>http://www.weather.gov/alerts/us.html</cap:references>
> <cap:info>
> <cap:category>Met</cap:category>
> <cap:event>na</cap:event>
> <cap:urgency>Unknown</cap:urgency>
> <cap:severity>Unknown</cap:severity>
> <cap:certainty>Unknown</cap:certainty>
> <cap:headline>
> Current Watches, Warnings and Advisories for Alaska Issued by the National
> Weather Service
> </cap:headline>
> <cap:web>http://www.weather.gov/alerts/us.html#ak</cap:web>
> </cap:info>
> ....
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
Hi Tom,

Remember, the namespace is the uri, and the prefix is merely a short-hand:
http://www.w3.org/TR/REC-xml-names/

<http://www.w3.org/TR/REC-xml-names/>When using simple xml objects, you can
directly reference elements by using the namespace:
http://www.sitepoint.com/blogs/2005/10/20/simplexml-and-namespaces/

<http://www.sitepoint.com/blogs/2005/10/20/simplexml-and-namespaces/>However,
my preference is to use XPath capabilities, and I've processed a couple
elements on your example to demonstrate how this works:

$doc = <<<EOD
<test xmlns:cap='http://www.incident.com/cap/1.0'>
<cap:alert>
<cap:identifier>NOAA-NWS-ALERTS National
2010-08-21T13:26:34-04:00</cap:identifier>
<cap:sender>w-nws.webmaster@xxxxxxxx</cap:sender>
<cap:sent>2010-08-21T13:26:34-04:00</cap:sent>
<cap:status>Actual</cap:status>
<cap:msgType>Alert</cap:msgType>
<cap:scope>Public</cap:scope>
<cap:note>
Current Watches, Warnings and Advisories for the United States Issued by the
National Weather Service
</cap:note>
<cap:references>http://www.weather.gov/alerts/us.html</cap:references>
<cap:info>
<cap:category>Met</cap:category>
<cap:event>na</cap:event>
<cap:urgency>Unknown</cap:urgency>
<cap:severity>Unknown</cap:severity>
<cap:certainty>Unknown</cap:certainty>
<cap:headline>
Current Watches, Warnings and Advisories for Alaska Issued by the National
Weather Service
</cap:headline>
<cap:web>http://www.weather.gov/alerts/us.html#ak</cap:web>
</cap:info>
</cap:alert>
</test>

EOD;
echo $doc;

$cap = simplexml_load_string($doc);
$cap->registerXPathNamespace('cap', 'http://www.incident.com/cap/1.0');
echo 'Message type:'.current($cap->xpath('//cap:msgType')).'<br />';
echo 'Info category:'.current($cap->xpath('//cap:info/cap:category')).'<br
/>';

Hope this helps,

Adam

-- 
Nephtali:  PHP web framework that functions beautifully
http://nephtaliproject.com

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux