我有一个XML数据存储在php中的$string
变量中,就像这样
<DATA>
<STOREITEMS>
<CREATED date="Tue Oct 9 5:30:01 BST 2012">
<CATEGORY id="442" name="Hen And Stag Nights"></CATEGORY>
<CATEGORY id="69" name="Games"></CATEGORY>
<CATEGORY id="252" name="Love Zone"></CATEGORY>
<CATEGORY id="202" name="Spotlight Items"></CATEGORY>
</CREATED>
<CREATED date="Wed Oct 10 5:30:01 BST 2012">
<CATEGORY id="442" name="Hen And Stag Nights"></CATEGORY>
<CATEGORY id="69" name="Games"></CATEGORY>
<CATEGORY id="252" name="Love Zone"></CATEGORY>
<CATEGORY id="202" name="Spotlight Items"></CATEGORY>
</CREATED>
</STOREITEMS>
<DATA>
我需要使用php
打印节点的日期我尝试过以下代码
$xml = new SimpleXMLElement($string);
$result = $xml->xpath("//DATA/STOREITEMS");
foreach ($result as $node) {
echo $node->CREATED["date"];
echo "<br>";
}
但它总是只返回
Tue Oct 9 5:30:01 BST 2012
为什么它不会像
那样返回Tue Oct 9 5:30:01 BST 2012
Wed Oct 10 5:30:01 BST 2012
如何解决这个问题?
答案 0 :(得分:0)
$result
是一个列表(只有一个商店项目),因此您的foreach
只会循环一次,而它所引用的CREATED是第一个孩子。
试试这个:
$xml = new SimpleXMLElement($string);
$result = $xml->xpath("//DATA/STOREITEMS/CREATED"); // note the change
foreach ($result as $node) {
echo $node["date"]; // note the change
echo "<br />";
}