You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP SimpleXML技术问询:从数据库XML中提取值

用PHP SimpleXML提取XML中的指定值

没问题,我来帮你搞定从这段XML里提取指定值的事儿~首先先把你提供的XML片段补全(你这里的<long...</void>截断了,我假设里面是具体的数值,比如<long>123456</long>),然后一步步来:

第一步:准备XML数据

先把从数据库取出的XML字符串整理好,示例如下:

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_161" class="java.beans.XMLDecoder">
  <object class="atavism.agis.objects.AgisMob" id="AgisMob0">
    <void property="name">
      <string>Rachels</string>
    </void>
    <void property="oid">
      <object class="atavism.server.engine.OID" id="OID0">
        <void property="data">
          <long>123456</long>
        </void>
      </object>
    </void>
  </object>
</java>

第二步:用SimpleXML加载并提取值

这里推荐用XPath来定位节点,比依赖节点顺序更可靠,具体代码如下:

// 假设从数据库查询得到的XML字符串存在$xmlString中
$xmlString = '你的XML内容';

// 加载XML,同时处理加载失败的情况
$xml = simplexml_load_string($xmlString);
if (!$xml) {
    die('XML加载失败,请检查数据格式是否完整正确');
}

// 提取name的值:通过property属性定位到对应的void节点,再取子节点string的内容
$name = (string)$xml->xpath("//void[@property='name']/string")[0];

// 提取oid的data值:同样用XPath逐层定位
$oidData = (string)$xml->xpath("//void[@property='oid']/object/void[@property='data']/long")[0];

// 输出结果
echo "提取到的Name: $name\n";
echo "提取到的OID Data: $oidData\n";

关键说明

  • 一定要用(string)强制转换SimpleXMLElement对象,不然直接输出会得到对象而不是字符串值。
  • 使用XPath的好处是不依赖节点的顺序,如果XML里的void节点顺序发生变化,代码依然能正确找到目标值,比用$xml->object->void[0]这种索引方式更健壮。

内容的提问来源于stack exchange,提问作者mdsmith98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:33:21