1

Zend フレームワーク上に構築されたコンテンツ管理システム (Omeka) を使用しています。サイトには、XML や JSON などのさまざまな出力オプションを持つページがあります。

サイトからの出力を検証できます。XML ファイルを .xml ファイルとしてサーバーに保存すると、コードでそれを読み込むことができます。しかし、スクリプトによって生成された XML ファイルの URL を参照すると、PHP はエラーを返します。404 が返されますが、ロードしようとしている URL をブラウザーに入力すると、適切な XML ページが表示されます。

読み込んでいるスクリプト: http://lw4.gc.cuny.edu/_dev_push/archive/items/show/1?output=omeka-xml .

ファイルを試してロードするために使用しているコードは次のとおりです。一連の方法を試して、それらのいずれかが機能するかどうかを確認しています。可能であれば、SimpleXML メソッドを使用したいと思います。

    $xml = simplexml_load_file('http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml');
    $doc = new DOMDocument();
    $doc->loadXML('http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml');
    echo $doc->saveXML();

    $str = file_get_contents('http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml');
    echo $str; 

以下は、動的に生成された XML ページの正確な URL を入力したときにスクリプトが返すエラーです。

警告: simplexml_load_file(http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml): ストリームを開くことができませんでした: HTTP 要求が失敗しました! HTTP/1.1 404 Not Found in /var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php 行 122 警告: simplexml_load_file(): I/O 警告: 外部エンティティ "http:/ /lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml" in /var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php on line 122 警告: DOMDocument::loadXML(): 開始タグが必要です。エンティティに '<' が見つかりません。行: 1 行目 /var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php の 124 警告: file_get_contents(http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml): ストリームを開くことができませんでした: HTTP 要求が失敗しました! HTTP/1。

この方法で URL を指定すると、スクリプトが読み込まれます。この場合、text3.xml はスクリプトで動的に生成されませんが、前の例で呼び出された xml ファイルと同じであることに注意してください。

    $xml = simplexml_load_file('http://lw4.gc.cuny.edu/_dev_push/archive/test3.xml');
    $doc = new DOMDocument();
    $doc->loadXML('http://lw4.gc.cuny.edu/_dev_push/archive/test3.xml');
    echo $doc->saveXML();

    $str = file_get_contents('http://lw4.gc.cuny.edu/_dev_push/archive/test3.xml');
    echo $str;

私が使用しているサイトの一部を保護するパスワードはありません。私は同じドメインで作業していますが、XML コンテンツを別のコンテンツ管理システムから別のシステム (最初のシステムのサブディレクトリにある) に取り込もうとしていることは指摘しておく価値があります。

ハードコーディングされているが同一の XML ファイルを指定するとこれらのスクリプトを動作させることができるので、動的 XML ファイルが Zend によって生成されたことが問題であると疑っていますが、への参照が見つかりませんでした。この機能、またはそれを変更する方法。

このコンテンツをロードして、PHP スクリプトで解析できるようにするにはどうすればよいと思いますか?

4

1 に答える 1

0

Zend フレームワーク上に構築されたコンテンツ管理システム (Omeka) を使用しています。サイトには、XML や JSON などのさまざまな出力オプションを持つページがあります。

ドキュメントを読んで、 REST要求を使用してこれらのリソースにアクセスする方法を見つけられるかどうかを確認してください。それができれば、返された XML または JSON を必要な形式に変換できます。

それ以外の場合は、cURL()などでページをスクレイピングし、結果を必要なフォームに入れる必要がある場合があります。

于 2012-10-03T10:30:39.007 に答える