我是XPath世界的新手.我想采用XML方法为我的简单组合网站而不是数据库提供支持,在这种情况下,数据库将是多余的,因为唯一的数据库元素就是项目本身.
我编写了一个具有以下结构的XML文件:
<?xml version="1.0" encoding="UTF-8" ?>
<projects>
<project>
<title>A-Merchandise</title>
<slug>a-merchandise</slug>
<projectType>E-commerce</projectType>
<launchDate>2007-08-01</launchDate>
</project>
...
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用PHP解析这个XML文件以获得列表概述,但是如何使用XPath过滤项目?例如,如何获取project具有projectType值为的子节点的所有节点e-commerce?
通常,我会运行SQL查询,如:
SELECT * FROM `projects` WHERE `category` = 'e-commerce';
Run Code Online (Sandbox Code Playgroud)
XPath等价物是什么?我的XML文件是否采用正确的结构来容纳此过滤?
任何指针都会很棒.提前致谢.
我相信你想要这个:
/projects/project[projectType="e-commerce"]
Run Code Online (Sandbox Code Playgroud)
该[]过滤器选择所有project下元素projects谁拥有projectType与价值孩子"e-commerce"
我还发现这个站点非常有助于搞乱XPath和XSLT查询.
进一步阅读:http://www.w3schools.com/xpath/xpath_syntax.asp
考虑到你的xml文件名是foo.xml,并且在bar.php的同一目录中有内容
$projects = simpleXMLElement('foo.xml',null,true);
$ecomProjects = $projects->xpath('project[projectType="E-commerce"]');
foreach($ecomProjects as $ecomProject)
{
echo $ecomProject; // or do whatever with it
}
Run Code Online (Sandbox Code Playgroud)