<details>
<car>
<id>61XZB6</id>
<Jan-01-14>20</Jan-01-14>
<Jan-02-14>435</Jan-02-14>
<Jan-03-14>454</Jan-03-14>
<Jan-04-14>768</Jan-04-14>
<Jan-05-14>24</Jan-05-14>
<Jan-06-14>675</Jan-06-14>
<Jan-07-14>213</Jan-07-14>
<Jan-08-14>44</Jan-08-14>
<Jan-09-14>565</Jan-09-14>
<Jan-10-14>80</Jan-10-14>
<Jan-11-14>998</Jan-11-14>
<Jan-12-14>67</Jan-12-14>
<Jan-13-14>77</Jan-13-14>
<Jan-14-14>909</Jan-14-14>
<Jan-15-14>34</Jan-15-14>
<Jan-16-14>887</Jan-16-14>
<Jan-17-14>767</Jan-17-14>
<Jan-18-14>545</Jan-18-14>
<Jan-19-14>67</Jan-19-14>
<Jan-20-14>787</Jan-20-14>
<Jan-21-14>898</Jan-21-14>
<Jan-22-14>435</Jan-22-14>
<Jan-23-14>42</Jan-23-14>
<Jan-24-14>232</Jan-24-14>
<Jan-25-14>234</Jan-25-14>
<Jan-26-14>675</Jan-26-14>
<Jan-27-14>46</Jan-27-14>
<Jan-28-14>546</Jan-28-14>
<Jan-29-14>88</Jan-29-14>
<Jan-30-14>0</Jan-30-14>
<Jan-31-14>0</Jan-31-14>
</car>
</details>
我的查询是如何在向每个标记插入新节点之前检查每个标记内的最后一个节点。提前感谢任何类型的帮助扩展。
答案 0 :(得分:1)
如果我理解正确,您想检查每个car
元素节点中的最后一个元素?好吧,Xpath有两个方法position()
和last()
可以在条件中使用。
选择汽车节点
/details/car
选择car
节点
/details/car/*
添加条件以将选择限制为最后一个节点
/details/car/*[last()]
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
foreach ($xpath->evaluate('/details/car/*[last()]') as $node) {
var_dump(
$node->nodeName,
$node->nodeValue
);
}
输出:
string(9) "Jan-31-14"
string(1) "0"
<强> HINT!强>
灵活的元素名称是非常糟糕的样式,您将无法在架构中定义它们。如果可能,我建议您将其更改为<amount date="Jan-31-14">0</amount>