如何获取simplexml对象中的最后一项(或任何特定项)?假设您不知道将有多少个节点。
例如。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/xsl.xml"?>
<obj
href="http://xml.foo.com/"
display="com.foo.bar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://obix.org/ns/schema/1.0"
>
<list name="data" of="HistoryRecord">
<obj>
<abstime name="timestamp" val="1876-11-10T00:00:00-08:00"></abstime>
<int name="energy_in_kwh" val="1234"></int>
<int name="energy_out_kwh" val="123456"></int>
</obj>
<obj>
<abstime name="timestamp" val="1876-11-10T00:15:00-08:00"></abstime>
<int name="energy_in_kwh" val="1335"></int>
<int name="energy_out_kwh" val="443321"></int>
</obj>
</list>
<int name="count" val="2"></int>
</obj>我想要抓取最后的<obj></obj>块(甚至只是其中的一部分)。
发布于 2008-11-17 08:56:14
我认为SimpleXML无论如何都会加载整个XML,并且(如果我没记错的话)您可以像使用数组一样使用SimpleXML节点,因此您可以只使用数组函数来获取最后一个节点。自从我使用PHP以来已经有一段时间了,但是你应该能够得到长度,然后得到长度为-1的项目。
编辑:你当然也可以使用XPath,我想我也应该提到这一点,但我不确定last()是否可以在SimpleXML XPath实现中工作。
我不确定哪一个是最快的,使用数组索引还是XPath,我猜数组索引更快,但你应该在循环中尝试几千次,得到循环前后的时间来检查。
但就像在CS中一样:你选择什么取决于很多事情。
它是时间关键还是经常使用:然后找到最快的解决方案。
如果您需要更复杂的查询,并且速度不是问题:那么使用任何最容易实现并提供所需功能的查询(XPath适用于复杂的树导航,数组索引适用于列表类型数据结构中的快速随机访问;两者都可以使用)。
https://stackoverflow.com/questions/295112
复制相似问题