2011-08-05 4 views
0

웹 사이트의 사이트 맵을 업데이트하거나 기술적으로 sitemap.xml 파일에 항목을 추가하는 함수를 작성하려고합니다. 구글 맵의 표준 구조는 여기에서 볼 수있다 : 위의 코드가 작동이 오류를 제공하지 않습니다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

으로는 문제가이 줄

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

대부분의 경우 당신은 당신의 XML 일부 URL 문자를 추가 할을해야 댓글에서 지적했다. 문제는 escape이거나 $valueCDATA 섹션으로 묶어야한다는 것입니다. 그렇지 않으면 생성 된 XML이 유효하지 않으며 XML 라이브러리는 이러한 종류의 예외를 throw합니다.

P. 나는 htmlentities 함수가 xml에도 좋은지 기억하지 못합니다.하지만 그 점에 대해서는 조사해야합니다.

관련 문제