[英]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.