代码之家  ›  专栏  ›  技术社区  ›  andrebruton

基本SimpleXML工作示例?

  •  5
  • andrebruton  · 技术社区  · 14 年前

    看起来在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>";
    ?>
    

    我只得到以下信息:

    标题:数组

    我怎样才能得到“头衔:比利·布什瓦卡”?

    XML数据没有重复,因此我不想使用数组。

    5 回复  |  直到 10 年前
        1
  •  19
  •   Josh Davis    14 年前

    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总是返回一个数组。


    回到你的案子,最好的方法 <title /> 节点将是

    $programme = simplexml_load_file("local.xml");
    echo "Title: " . $programme->title;
    
        2
  •  4
  •   Anti Veeranna    14 年前

    首先, simplexml xpath 方法始终返回匹配的数组。即使只有1个匹配项(或者甚至是0,在这种情况下,结果是空数组)。这就是为什么在输出中得到“数组”的原因。

    其次,如果只需要标题,则需要更改xpath查询:

    $result = $xml->xpath("//programme/title");
    echo "Title: " . $result[0] . "</br>";
    
        3
  •  1
  •   Matěj G.    14 年前

    您可能应该将xpath更改为 //programme/title 然后回声 $result[0] 或者让xpath保持原样并回音 $result[0]->title . 记得 var_dump 会一直帮助你。

        4
  •  0
  •   Andy West    14 年前

    我想你想要:

    $result = $xml->xpath("/programme/title");
    echo "Title: " . $result[0] . "</br>";
    
        5
  •  0
  •   vuhung3990    10 年前
    $xml = simplexml_load_file("local.xml");
    
    echo $xml->programme->title;
    ......
    echo $xml->programme->description;