看起来PHP中的simpleXML存在很多问题。我正在Windows上运行最新版本的php,我无法像在文档中那样使用simpleXML的基本示例。
我的xml文件是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<programme>
<title>Billy Bushwaka</title>
<episodeNumber>2</episodeNumber>
<description>Billy Bushwaka entertains</description>
<url>play.swf</url>
</programme>
我的PHP程序是:
<?php
$xml = simplexml_load_file("local.xml");
$result = $xml->xpath("//programme");
echo "Title: " . $result . "</br>";
?>
我得到的是以下内容:
标题:数组
我如何获得“Title:Billy Bushwaka”?
没有重复的XML数据,所以我不想使用数组。
答案 0 :(得分:20)
首先,始终将PHP变量命名为它们所代表的节点。
// the root node is <programme/>
$programme = simplexml_load_file("local.xml");
访问子节点(节点),就好像它们是对象属性一样。
echo $programme->title;
如果有多个孩子使用相同的名称,您可以指定他们从0开始的位置
// first <title/> child
echo $programme->title[0];
// create or change the value of the second <title/> child
$programme->title[1] = 'Second title';
访问属性,就好像它们是数组键一样
// <mynode attr="attribute value" />
echo $mynode['attr'];
XPath始终返回一个数组。
回到你的案例,访问<title />
节点的最佳方式是
$programme = simplexml_load_file("local.xml");
echo "Title: " . $programme->title;
答案 1 :(得分:4)
首先,simplexml xpath方法总是返回一个匹配数组。即使只有一个匹配(甚至0,在这种情况下结果是一个空数组)。这就是你在输出中得到“数组”的原因。
其次,如果您只想要标题,则需要更改xpath查询:
$result = $xml->xpath("//programme/title");
echo "Title: " . $result[0] . "</br>";
答案 2 :(得分:1)
您应该将xpath更改为//programme/title
然后回显$result[0]
或保持xpath不变并回显$result[0]->title
。请记住var_dump将永远为您提供帮助。
答案 3 :(得分:0)
我想你想要:
$result = $xml->xpath("/programme/title");
echo "Title: " . $result[0] . "</br>";
答案 4 :(得分:0)
$xml = simplexml_load_file("local.xml");
echo $xml->programme->title;
......
echo $xml->programme->description;