2011-12-29 59 views
0

XML文件可以看到下面:的SimpleXML的XPath

我如何可以编写它,因此产品并提供数据显示在顺序。

目前我已经尝试下面的代码:

foreach ($xml->GeneralSearchResponse->categories->category->items->xpath('/product | /offer') as $product) 
{ 

    print $product->name; 
} 

然而,这并不显示任何数据。

感谢,

杰克

+0

哪种订单?哪个XML元素代表一个产品以及哪个产品? - 到目前为止您尝试了什么,请添加您的代码并显示xpath中哪些部分存在特定问题。 – hakre 2011-12-29 19:00:17

+0

它也可以以任何顺序。 – JackTheJack 2011-12-29 19:02:00

+0

我曾尝试: 的foreach($ XML-> GeneralSearchResponse->分类 - >类别 - >物品─>的XPath( '/产品| /报价')为$产品) { \t打印$产品 - >名称; } – JackTheJack 2011-12-29 19:03:01

回答

1

的XML通过提供的链接指向的是没有很好地形成。很可能你会得到一个XML解析错误。

更具体而言,任何&somename=必须更改为&somename=

似乎还有其他严重的非法语法问题。

+0

是的,我只是没有从每条语句中获取数据。 – JackTheJack 2011-12-29 19:12:14

+0

@JackTheJack:因此,问题根本不在于XPath。首先,纠正数据,以便您有一个格式良好的XML文档。 – 2011-12-29 19:17:04

+1

此外,我认为值得注意的是在* foreach和整个文档之前执行xpath *。这样的责任更清楚:xpath表达式获取节点列表,foreach遍历它。调试也变得更容易。 – hakre 2011-12-29 19:45:53