基本的simpleXML工作示例?

时间:2009-12-12 10:41:57

标签: php xml xpath simplexml

看起来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数据,所以我不想使用数组。

5 个答案:

答案 0 :(得分:20)

SimpleXML 101

  1. 首先,始终将PHP变量命名为它们所代表的节点。

    // the root node is <programme/>
    $programme = simplexml_load_file("local.xml");
    
  2. 访问子节点(节点),就好像它们是对象属性一样。

    echo $programme->title;
    
  3. 如果有多个孩子使用相同的名称,您可以指定他们从0开始的位置

    // first <title/> child
    echo $programme->title[0];
    
    // create or change the value of the second <title/> child
    $programme->title[1] = 'Second title';
    
  4. 访问属性,就好像它们是数组键一样

    // <mynode attr="attribute value" />
    echo $mynode['attr'];
    
  5. XPath始终返回一个数组。


  6. 回到你的案例,访问<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;