使用php跳过XML代码中的2个元素


skip 2 element in xml code with php

我有这个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编码解码的数组大杂烩-只会破坏你最后需要保留的数据。