我有以下notes.xml XML文件。
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这个PHP脚本
<?php
$xml = simplexml_load_file('notes.xml');
$result = $xml->xpath('//to');
print_r($result);
echo "<br>";
echo $result;
?>
然后,为什么输出如下? (没有价值)
Array ( [0] => SimpleXMLElement Object ( ) )
Array
答案 0 :(得分:2)
看看the manual for the SimpleXMLElement::xpath
method。它始终返回零个或多个SimpleXMLElement
个对象的数组。
如果您echo
数组 - 任何数组 - 您都会得到Array
这个词。
如果您echo
SimpleXMLElement
个对象,它会自动转换为字符串(就像您用echo (string)$foo
代替echo $foo
一样,如图所示在the basic SimpleXML examples。
所以你需要查看在数组中,获取SimpleXMLElement
对象,并回显它。请记住,如果未找到匹配项,则数组将为空。
答案 1 :(得分:1)
$result = $xml->xpath('//to');
这会返回一组SimpleXMLElement
个对象,因为XML中可能有多个<to>
标记。要提取文本,您应该使用
echo (string) $result[0];
转换为字符串会返回标记中的文本内容。
如果您的XML总是那么简单,您也可以使用
$result = (string) $xml->to;