gpt4 book ai didi

php - PHP 中的 XPath - SimpleXMLElement 键数字而不是文本

转载 作者:行者123 更新时间:2023-12-03 15:53:16 24 4
gpt4 key购买 nike

我将以下 XML 保存在 $string 中

<?xml version="1.0" encoding="ISO-8859-1"?>
<users>
<user id="1">
<name>Michael Tray</name>
<account>473.43</account>
</user>
<user id="2">
<name>Sandra Marry</name>
<account>154.24</account>
</user>
</users>

我使用以下简单的 XPath 表达式来获取所有名称

$xml = simplexml_load_string($string);
$result = $xml->xpath("/users/user/name");
echo "<pre>";
print_r($result);
echo "</pre>";

我得到了什么

Array (
[0] => SimpleXMLElement Object
(
[0] => Michael Tray
)

[1] => SimpleXMLElement Object
(
[0] => Sandra Marry
)
)

我想要什么

Array (
[0] => SimpleXMLElement Object
(
[name] => Michael Tray
)

[1] => SimpleXMLElement Object
(
[name] => Sandra Marry
)
)

所以 SimpleXMLElement 键应该是一个字符串(标签名称)而不是一个数字。我该怎么做?

最佳答案

与 SimpleXML 一样,print_r 是在骗你。这些对象实际上根本没有 0 的“键”。

每个对象实际上代表一个 XML 元素,您可以使用 getName() 访问标签名称, 以及带有 (string) 转换的字符串内容,如下所示:

foreach ( $result as $node ) {
echo 'Name: ', $node->getName(), '; ';
echo 'Content: ', (string)$node, '<br />';
}

((string) 实际上与 echo 是多余的,因为无论如何它都会强制将内容变成字符串,但重要的是要记住其他任何地方以避免传递整个对象错误。)

关于php - PHP 中的 XPath - SimpleXMLElement 键数字而不是文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29213800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com