【发布时间】:2014-09-17 16:11:34
【问题描述】:
现状:
我正在尝试使用 XPath 解析 DomDocument,结果应该是包含 Categories 和 Subcategories 的数组。 问题是,制作 HTML 的人没有用主要类别中的子类别来构建信息,它们只是由纯 css 分隔。
html 是这样的:
<div class="menu_item">Main Category AC</div>
<div class="submenu_div">
<a href="http://www.link.com/313">
<div class="sub_item">
<h3>Sub Categ A</h3>
</div>
</a>
<a href="http://www.link.com/475">
<div class="sub_item">
<h3>Sub Categ B</h3>
</div>
</a>
<a href="http://www.link.com/321">
<div class="sub_item">
<h3>Sub Categ C</h3>
</div>
</a>
</div>
<div class="menu_item">Main Category BC</div>
<div class="submenu_div">
<a href="http://www.link.com/313">
<div class="sub_item">
<h3>Sub Categ X</h3>
</div>
</a>
<a href="http://www.link.com/475">
<div class="sub_item">
<h3>Sub Categ Y</h3>
</div>
</a>
<a href="http://www.link.com/321">
<div class="sub_item">
<h3>Sub Categ Z</h3>
</div>
</a>
</div>
现在,有了这个php,我可以提取de类别和子类别,但它只是一个列表,我不知道什么子类别在什么类别中,我被卡住了。 如何使用 Xpath 提取主要类别子类别并为每个子类别分配父级?
$doc = new DomDocument;
@$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
foreach( $xpath->query('//div[@class="menu_item"]|//div[@class="submenu_div"]/a/div/h3') as $e ) {
echo $e->nodeValue, "<br />\n";
}
【问题讨论】:
-
使用上述代码运行示例:ideone.com/imVRmd
-
我猜这使用单个 XPath 会很困难。你愿意用两个吗?
-
我会使用任何在这一点上有效的东西 .. 也许 xpath 不是最好的方法,但我会使用任何能完成工作的东西,因为我的头现在正在横向移动。
-
我在这里,但似乎什么都没有,还没有完成:( ideone.com/4nuEnZ