お世話になります。

データベースよりxmlを生成し、自分のHPに1ページに埋め込みたいと思っています。

いろいろなサイトを参考に、MagpieRSSを使用して表示させたいのですが、コードのサンプルに記載されている他サイトのRSS・xmlは表示できるのですが、ローカルのxmlは下記のエラーが出てしまい表示できません。
Warning: MagpieRSS: Failed to parse RSS file. (not well-formed (invalid token) at line 9, column 21) in /aaa/rss/rss_fetch.inc on line 238
変更した部分は、表示するxmlのURLのみです。

使用しているphpのバージョンは4.34、MagpieRSSのバージョンは0.72です。

問題のrss.phpのソース↓
<?php
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'http://www.aaa.com/rss.xml';
$rss = fetch_rss($url);
if ($rss && !$rss->ERROR) {
drawRSS($rss);
}else{
echo "取得できませんでした。";
}
function drawRSS($rss){
$items = array_slice($rss->items, 0, 10);
echo "<ul>\n";
foreach ($items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "UTF-8", "auto");
$url = $item[link];
$description = $item[description];
$description = mb_convert_encoding($description, "UTF-8", "auto");
echo "<li><a href=\"$url\">$title</a></li>\n$description";
}
echo "</ul>\n";
}
?>


何か、対処方法をご存知の方教えてください。
よろしくお願いいたします。

A 回答 (2件)

>9行目21文字目は漢字でした


だとしたら、思いつくとしたら「文字コード」なんだけどな。
まさかXML宣言のencodingがないとか間違っている(ファイルがShift_JISだったとか。アルファベットは大半の文字コードでASCIIコードが基準になって共通なため、問題が発生しにくい)ってオチはないですよねぇ?

この回答への補足

ですよね。。
私もそうだと思って試行錯誤・・・・・

表示のテストをしているxmlは↓(以下test.xml)

<?xml version="1.0" encoding="EUC-JP"?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel rdf:about="http://www.test.daion.ac.jp/">
<title>Web</title>
<link>http://www.aaa.com</link>
<description>test</description>
<dc:language>ja</dc:language>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.aaa.com/test.php?eid=209"/>
<rdf:li rdf:resource="http://www.aaa.com/test.php?eid=192"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://www.aaa.com/test.php?eid=209">
<dc:date>2007-03-11T15:00:00+01:00</dc:date>
<dc:source>18:30</dc:source>
<title>aaa</title>
<link>http://www.aaa.com/test.php?eid=209</link>
<description>aaa</description>
</item>
<item rdf:about="http://www.aaa.com/test.php?eid=192">
<dc:date>2007-02-24T15:00:00+01:00</dc:date>
<dc:source>14:00</dc:source>
<title>bbb</title>
<link>http://www.aaa.com/test.php?eid=192</link>
<description>bbb</description>
</item>
</rdf:RDF>

これは表示OKです。

ただ、phpでxmlを生成しているんですが、phpで新しく生成したファイル(以下new.xml)は<description>の部分でエラーが出ます。
xmlの形はまったく同じで、new.xmlの<item>部分だけをコピーして
test.xmlの<item>部分に貼り付けすると、エラーも出ず漢字・かなも表示出来ました。

一度、違う文字コードで、new.xmlを生成してみます!!

ありがとうございます!!

補足日時:2007/02/17 11:55
    • good
    • 0
この回答へのお礼

xmlの生成の際に、title・descriptionの部分をmb_convert_encodingしてみました!!

無事に表示することが出来ました。

ありがとうございました。

お礼日時:2007/02/17 14:29

PHP未経験者です。



エラーを見る限りでは
>(not well-formed (invalid token) at line 9, column 21)
となっていますが

そのローカルのXMLファイルは整形式なの?コレ見るとそういうエラー出てるみたいだけど。(9行目、21文字目におかしい文字があるらしい)
    • good
    • 0
この回答へのお礼

おはようございます。

9行目21文字目は漢字でした。
ためしに、xmlの中のテキスト部分をすべて英数字にしてみると
ちゃんと表示が出来ました。

日本語の表示の部分みたいですが・・・・なかなか良い解決方法が見つかりません。

回答ありがとうございました。

お礼日時:2007/02/17 09:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ