【问题标题】:Parsing XML properly正确解析 XML
【发布时间】:2011-04-13 21:56:58
【问题描述】:

我正在使用 Songkick API,需要从 URL 解析 XML 数据以获取嵌套 url 并重定向到它。我似乎无法正确解析 XML。这就是我现在所拥有的。

1.  <?php
2.  $songkick_artist = $_GET['id'];
3. 
4.  $xmlDoc = new DOMDocument(); 
5.  $xmlDoc->load("http://api.songkick.com/api/3.0/search/artists.xml?query=$songkick_artist&apikey=songkickapikey"); 
6.
7.  $x = $xmlDoc->documentElement; 
8.  foreach ($x->childNodes AS $item) 
9.  {  
10. print $item->[]  
11. print $item->nodeName . " = " . $item->nodeValue . "<br />"; 
12. }
13. ?>

我收到此错误:

解析错误:语法错误,意外的“[”,应为 T_STRING 或 T_VARIABLE 或 '{' 或 '$' 在第 10 行

解析 XML 信息的方法太多了,我现在很困惑。对此的任何帮助将不胜感激。

2011 年 4 月 13 日更新

我现在将代码更改为:

<?php   
$doc = new DomDocument;

// We must validate the document before referring to the id
$doc->validateOnParse = true;
$doc->Load("http://api.songkick.com/api/3.0/search/artists.xml?query=$songkick_artist&apikey=songkickapikey");

echo "The element whose id is myelement is: " . 
$doc->getElementById('myelement')->tagName . "\n";
?>

当 $doc->Load("URL"); 时我收到 403 禁止错误被解雇了……

什么给了?

【问题讨论】:

  • 检查你的语法。错误消息告诉您在第 10 行有语法错误:print $item-&gt;[]。这与在这种情况下解析 XML 无关。
  • 在提出这个问题时,我不确定 API 是否缺少 JSON 支持,但现在支持 JSON,并且比 XML 更受欢迎。

标签: php xml parsing


【解决方案1】:

您的问题是一个简单的解析错误。 你缺少一个 ;在第 10 行。这可能解决它?

【讨论】:

    【解决方案2】:

    你想在第 10 行做什么?您的合成标签错误: print $item-&gt;[] $item 是一个对象,所以你可以使用 $item->doSomeMethod() 来做 doSomeMethod 但你不能写 $item->[]。

    【讨论】:

    • 嗨 Wesley,我已经尝试过了,但这不是问题。似乎 MRu 就在这里,但我该怎么做才能得到我需要的结果?
    【解决方案3】:

    想通了。

    $request_url = urlencode ("http://api.songkick.com/api/3.0/search/artists.xml?query=$songkick_artist&apikey=songkickapikey"); $xml = simplexml_load_file($request_url) 或 die("feed 未加载"); $artist = $xml->results ->artist["uri"];

    urlencode 是这方面的主要关键,因为 url 将无法正确解析...

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 2011-05-11
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      相关资源
      最近更新 更多