0
$file = simplexml_load_file($url); {


    foreach($file->entry as $post) {


    $row = simplexml_load_string($post->asXML()); // after adding this line, i get error message

    $links = $row->xpath('//link[@rel="alternate" and @type="text/html"]');
    echo (string) $post->title;
    echo (string) $links[0]['href'];

このスクリプトを使用して、Atom フィードを解析します。リンクの href 属性を適切に渡すことができなかったため、最初は機能しませんでした。追加$rowしましたが、機能しましたが、「エントリの etag の名前空間プレフィックス gd が定義されていません」というエラーが表示されます。これを何時間も探していますが、解決策が見つかりません。私はとても近かった。

4

1 に答える 1

0

この行$row = simplexml_load_string($post->asXML());は、機能する場合、長々とした書き方になり$row = $postます。互いに反対のアクションを実行して、最初に作成したのと同じオブジェクトを取得します->asXML()simplexml_load_string

あなたのケースで奇妙な動作をしている理由は、XML ドキュメントが「名前空間」を使用しており、によって生成された XML のフラグメントが$post->asXML()それ自体では XML ドキュメントとして機能しないためだと思います。

XPathは名前空間にかなり敏感であるため、この行が魔法のように修正されたように見える元の問題も名前空間にあったと思われます。使用例をregisterXPathNamespace調べて、問題が解決するかどうかを確認してください。そうでない場合は、元の問題を示し、処理している XML のサンプルを含めて、フォローアップの質問を自由に投稿してください。

于 2013-02-16T21:56:47.037 に答える