[英]Not able to make selection of XML using XPath in PHP
I've been trying to access some XML, which looks like this: 我一直在尝试访问一些XML,如下所示:
<feed xmlns:s="http://syndication.nhschoices.nhs.uk/services" xmlns="http://www.w3.org/2005/Atom">
<title type="text">NHS Choices - GP Practices Near Postcode - W1T4LB - Within 5km</title>
<entry>
<id>http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/27369</id>
<title type="text">Fitzrovia Medical Centre</title>
<updated>2011-08-20T22:47:39Z</updated>
<link rel="self" title="Fitzrovia Medical Centre" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/27369?apikey="/>
<link rel="alternate" title="Fitzrovia Medical Centre" href="http://www.nhs.uk/ServiceDirectories/Pages/GP.aspx?pid=303A92EF-EC8D-496B-B9CD-E6D836D13BA2"/>
<content type="application/xml">
<s:organisationSummary>
<s:name>Fitzrovia Medical Centre</s:name>
<s:address>
<s:addressLine>31 Fitzroy Square</s:addressLine>
<s:addressLine>London</s:addressLine>
<s:postcode>W1T6EU</s:postcode>
</s:address>
<s:contact type="General">
<s:telephone>020 7387 5798</s:telephone>
</s:contact>
<s:geographicCoordinates>
<s:northing>182000</s:northing>
<s:easting>529000</s:easting>
<s:longitude>-0.140267259415255</s:longitude>
<s:latitude>51.5224357586293</s:latitude>
</s:geographicCoordinates>
<s:Distance>0.360555127546399</s:Distance>
</s:organisationSummary>
</content>
</entry>
</feed>
I've been using this PHP code to try and access the data: 我一直在使用这个PHP代码来尝试访问数据:
<?php
$feedURL = 'http://v1.syndication.nhschoices.nhs.uk/organisations/pharmacies/postcode/W1T4LB.xml?apikey=&range=5';
$xml = simplexml_load_file($feedURL);
$xml->registerXPathNamespace('s', 'http://syndication.nhschoices.nhs.uk/services');
$pharm_entries = $xml->xpath('//entry');
var_dump($pharm_entries);
foreach ($pharm_entries as $v)
{
print_r($v->nodeValue);
}
?>
Here $pharm_entries
is always empty using var_dump
. 这里使用var_dump
$pharm_entries
总是空的。 For some reason XPath isn't returning a proper SimpleXMLElement
with the query string as it is. 由于某种原因,XPath没有按原样返回带有查询字符串的正确SimpleXMLElement
。 I was hoping the current //entry
would find all instances of <entry>
nodes, but it doesn't...? 我希望当前的//entry
能找到<entry>
节点的所有实例,但它不会......?
How can I get it to work? 我怎样才能让它发挥作用? Also, what's the best way of going about getting the <s:address>
tag, and printing out each line of the address (still using XPath or maybe another way)? 另外,获取<s:address>
标签并打印出地址的每一行(仍使用XPath或其他方式)的最佳方法是什么?
Appreciate the help as always. 一如既往地欣赏帮助。
Try registering the Atom namespace too: 尝试注册Atom命名空间:
$xml->registerXPathNamespace('a', 'http://www.w3.org/2005/Atom');
$pharm_entries = $xml->xpath('//a:entry');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.