繁体   English   中英

PHP SimpleXMLElement对象获取数据

[英]PHP SimpleXMLElement object get data

我有以下XML:

<Root>
    <personalData>
        <userName>John Tom</userName>
        <email>mail@example.com</email>
    </personalData>
    <profesionalData>
        <job>engineer</job>
        <jobId>16957</jobId>
    </profesionalData>
</Root>

在我的调试器中执行以下操作:

$myObject->xpath('//Root/profesionalData')

我有:

: array = 
  0: object(SimpleXMLElement) = 
    job: string = engineer    
    jobId: string = 16957

我无法获得jobId 16957

我需要做什么?

$root = simplexml_load_file('file.xml');


$job_ids = $root->xpath('//profesionalData/jobId');

if (!$job_ids) {
  die("Job IDs not found");
}

foreach ($job_ids as $id) {
  // SimpleXmlElement implements __toString method, so
  // you can fetch the vlaue by casting the object to string.
  $id = (string)$id;
  var_dump($id);
}

样本输出

string(5) "16957"

笔记

您无需在XPath表达式中指定Root ,如果要获取所有profesionalData/jobId标记,无论它们在文档中的位置如何,只需使用双斜杠( // )表达式即可。 当您要避免注册XML名称空间时,这种方法可能很方便。 否则,您可以使用/Root/profesionalData/jobId (来自根的路径)之类的严格表达式。 顺便说一下,您当前的表达式( //Root/profesionalData/jobId )与文档中所有出现的/Root/profesionalData/jobId匹配,例如/x/y/z/Root/profesionalData/jobId

由于SimpleXmlElement::xpath函数在成功时返回数组,而在失败时返回FALSE ,因此,如果它是非空数组,则应使用循环来迭代该值。

SimpleXmlElement实现__toString方法。 当对象出现在字符串上下文中时,将调用该方法。 特别是,可以对象转换为字符串,以获取节点的字符串内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM