我有这个XML数据:
<root>
<child>child1</child>
<child>child2</child>
<child>child3</child>
</root>
我可以用PHP解析它:
$xml = simplexml_load_string($string);
我想跳过前两个孩子,得到这个结果:
<root>
<child>child3</child>
</root>
谢谢
可以使用Xpath查询查询感兴趣的元素:
$xml = new SimpleXMLElement($string);
$last = $xml->xpath("child[last()]")[0];
受启发:如何访问XML文件中的最后一个元素.
如果您在问题中询问删除所有<child>
元素,直到只剩下一个,您可以使用简单的while
-循环:
<?php
/**
* skip 2 element in xml code with php
*
* @link https://stackoverflow.com/q/31879798/367456
*/
$string = <<<XML
<root>
<child>child1</child>
<child>child2</child>
<child>child3</child>
</root>
XML;
$xml = simplexml_load_string($string);
$child = $xml->child;
while ($child->count() > 1) {
unset($child[0]);
}
$xml->asXML('php://output');
输出为(也是:online-demo):
<?xml version="1.0"?>
<root>
<child>child3</child>
</root>
如果您只关心获取最后一个元素,请使用另一个答案中建议的xpath查询。甚至不要考虑使用json编码解码的数组大杂烩-只会破坏你最后需要保留的数据。