2011-08-05 17 views
0

私は、Webサイトのサイトマップを更新する機能を記述しようとしています。あるいは、技術的にsitemap.xmlファイルに項目を追加しています。 Googleのサイトマップの標準構成は、ここで見ることができます:上記のコードが動作して、このエラーを与えていないPHP DOMDocument()を使用してXMLファイルを更新する際の問題。

function AddEntry($loc,$lastmod,$changefreq,$priority){ 

$xmlDoc = new DOMDocument(); 
$xmlDoc->load("sitemap.xml"); 


$url []=array('loc' => $loc, 'lastmod' => $lastmod, 'changefreq'=> $changefreq, 'priority' =>$priority); 

$r=$xmlDoc->createElement("url"); 

$xmlDoc->appendChild($r); 

foreach($url as $key=>$value) 
{ 
    $r->appendChild($xmlDoc->createElement($key))->appendChild($xmlDoc->createTextNode($value)); 

} 

$xmlDoc->save(); 
} 

「致命的なエラーhttp://www.sitemappro.com/google-sitemap.html

後は、その関数のコードです:「無効な文字エラー」というメッセージの「DOMException」がキャッチされました。

コードを修正して助けてもらえますか?前もって感謝します。

+0

これはどの回線で発生していますか?おそらくforeachループ内のappendChild? –

答えて

0

としては問題はほとんどの場合、あなたのXMLにいくつかのURLの文字を追加している

$r->appendChild($xmlDoc->createElement($key))->appendChild($xmlDoc->createTextNode($value)); 

この行にする必要がありますコメントで指摘しました。問題はescapeまたは$valueCDATAセクションで囲む必要があることです。そうしないと、生成されたXMLは無効になり、XMLライブラリはそのような例外をスローします。

P.S.私はhtmlentitiesの機能がxmlのためにも良いかどうか覚えていませんが、それについては調査する必要があります。

関連する問題