基本上负责使用php创建REST服务。我有一个XML文件。下面的代码段。
<?xml version='1.0' encoding='UTF-8'?>
<crimes year='2013' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="stats.xsd">
<data country='England' region='North East Region' area='Cleveland'>
<heading name='Victim-based crime'>
<category name='Violence against the person'>
<number type='Homocide' total='3'/>
<number type='Violence with injury' total='3737'/>
<number type='Violence without injury' total='2630'/>
</category>
<category type='Sexual offences' total='563' />
<category type='Robbery' total='259' />
<category type='Theft offences'>
<number type='Burglary' total='4561' />
<number type='Domestic Burglary' total='2054' />
<number type='Non-domestic burglary' total='2057' />
<number type='Vehicle offences' total='3329' />
<number type='Theft from the person' total='372' />
<number type='Bycycle theft' total='994' />
<number type='Shoplifting' total='5174' />
<number type='All other theft offences' total='5381' />
</category>
<category type='Criminal damage and arson' total='7934' />
</heading>
<heading name='Other crimes against society'>
<category type='Drug offences' total='2116' />
<category type='Possession of weapons offences' total='267' />
<category type='Public order offences' total='1342' />
<category type='Miscellaneous crimes against society' total='405' />
<category type='Fraud' total='405' />
</heading>
</data>
</crimes>
它包含多个数据集。
所以我尝试使用simpleXML在XML文件上显示内容。
header('Content-Type: text/plain');
$xml=simplexml_load_file("stats.xml");
print_r($xml);
代码显示数组,每个数组包含XML文件中的一个元素。我也尝试过使用DOM,但是我被告知easyXML是要走的路,但到目前为止这是建议的程度。
我基本上希望根据在网址中输入的内容从XML文件中提取内容,例如http://www.url.com/crimes/country/使用GET并以与输入相关的XML格式显示内容。
我设法使用:
显示xml文件中的第一个元素$xml = simplexml_load_file("stats.xml");
echo "<h2>".$xml->getName()."</h2><br />";
foreach($xml->children() as $crimes)
{
echo "Country : ".$crimes->attributes()->country."<br />";
echo "Region : ".$crimes->attributes()->region."<br />";
echo "Area : ".$crimes->attributes()->area."<br />";
}
但是只显示<data..>
并且它没有使用GET方法。
我完全迷失了,我甚至不知道从哪里开始,我已经在谷歌搜索了几天,但我什么都没发现。任何建议或提示都会很棒。
答案 0 :(得分:0)
我认为动态汇编XPath查询最简单,然后使用->xpath()
方法运行它。
这样的事情对你上面的特定例子有用:
$xpath = sprintf(
'/crimes/data[@country="%s"][@area="%s"]/heading/category/number[@type="%s"]',
$_GET['name'],
$_GET['area'],
$_GET['type']
);
$nodeList = $xml->xpath($xpath);
echo 'Number: ', $nodeList[0]['total'];
您可能需要添加逻辑来以不同方式构建查询,以根据URL中提供的变量来获取其他数据。希望这能让你走上正轨。