首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP SimpleXML。如何获得最后一件物品?

PHP SimpleXML。如何获得最后一件物品?
EN

Stack Overflow用户
提问于 2008-11-17 08:47:20
回答 6查看 8.5K关注 0票数 1

如何获取simplexml对象中的最后一项(或任何特定项)?假设您不知道将有多少个节点。

例如。

代码语言:javascript
运行
复制
<?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>块(甚至只是其中的一部分)。

EN

Stack Overflow用户

发布于 2008-11-17 08:56:14

我认为SimpleXML无论如何都会加载整个XML,并且(如果我没记错的话)您可以像使用数组一样使用SimpleXML节点,因此您可以只使用数组函数来获取最后一个节点。自从我使用PHP以来已经有一段时间了,但是你应该能够得到长度,然后得到长度为-1的项目。

编辑:你当然也可以使用XPath,我想我也应该提到这一点,但我不确定last()是否可以在SimpleXML XPath实现中工作。

我不确定哪一个是最快的,使用数组索引还是XPath,我猜数组索引更快,但你应该在循环中尝试几千次,得到循环前后的时间来检查。

但就像在CS中一样:你选择什么取决于很多事情。

它是时间关键还是经常使用:然后找到最快的解决方案。

如果您需要更复杂的查询,并且速度不是问题:那么使用任何最容易实现并提供所需功能的查询(XPath适用于复杂的树导航,数组索引适用于列表类型数据结构中的快速随机访问;两者都可以使用)。

票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/295112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档