PHP 中的 XPath - SimpleXMLElement 键数字而不是文本
XPath in PHP - SimpleXMLElement key numeric instead of textual
我在 $string
中保存了以下 XML
<?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
是在骗你。这些对象根本没有 "key" 0。
每个对象实际上代表一个单独的XML元素,您可以使用getName()
访问标签名称,并使用(string)
转换访问字符串内容,如下所示:
foreach ( $result as $node ) {
echo 'Name: ', $node->getName(), '; ';
echo 'Content: ', (string)$node, '<br />';
}
((string)
实际上与 echo
是多余的,因为它无论如何都会强制将事物串起来,但重要的是要记住其他任何地方以避免错误地传递整个对象。)
我在 $string
中保存了以下 XML<?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
是在骗你。这些对象根本没有 "key" 0。
每个对象实际上代表一个单独的XML元素,您可以使用getName()
访问标签名称,并使用(string)
转换访问字符串内容,如下所示:
foreach ( $result as $node ) {
echo 'Name: ', $node->getName(), '; ';
echo 'Content: ', (string)$node, '<br />';
}
((string)
实际上与 echo
是多余的,因为它无论如何都会强制将事物串起来,但重要的是要记住其他任何地方以避免错误地传递整个对象。)