simplexml을 사용하여 Atom 데이터를 처리합니다. 많은 블로그에서는 Atom을 사용하여 데이터를 출력하지만 Atom은 네임스페이스를 사용하므로 이제 명명된 요소와 로컬 이름을 요청할 때 네임스페이스 URI(Uniform Resource Identifier)를 지정해야 합니다. 이 xml 트리를 직접 쿼리하세요.
PHP 버전 5.1부터 SimpleXML은 네임스페이스 문서에서 직접 XPath 쿼리를 사용할 수 있습니다. 평소와 같이 XPath 위치 경로는 검색 중인 문서가 기본 네임스페이스를 사용하는 경우에도 네임스페이스 접두사를 사용해야 합니다. RegisterXPathNamespace() 함수는 접두어를 후속 쿼리에 사용되는 네임스페이스 URL과 연결합니다.
다음은 Atom 문서의 제목 요소를 쿼리하기 위해 xpath를 사용하는 예입니다.
일반 텍스트
암호:
$atom = simplexml_load_file('http://www.ooso.net/index.php/feed/atom');
$atom->registerXPathNamespace('atom','http://www.w3.org/2005/Atom');
$titles = $atom->xpath('//atom:제목');
foreach($titles를 $title로)
echo"<h2>".$제목."</h2>";
simplexml을 사용하여 RSS 데이터 처리
Wordpress는 rss2 데이터 소스를 출력할 수 있으며 dc와 같은 몇 가지 다른 네임스페이스도 있습니다. rss2를 구문 분석하기 위해 simplexml을 사용하는 예:
일반 텍스트
PHP:
$ns=배열(
'콘텐츠'=>'http://purl.org/rss/1.0/modules/content/',
'wfw'=>'http://wellformedweb.org/CommentAPI/',
'dc'=>'http://purl.org/dc/elements/1.1/'
);
$articles=배열();
// 1단계: 피드 가져오기
$blogUrl='http://www.ooso.net/index.php/feed/rss2';
$xml= simplexml_load_url($blogUrl);
// 2단계: 채널 메타데이터 가져오기
$채널=배열();
$channel['title'] =$xml->채널->제목;
$channel['link'] =$xml->채널->링크;
$channel['description']=$xml->채널->설명;
$channel['pubDate'] =$xml->pubDate;
$channel['timestamp'] =strtotime($xml->pubDate);
$channel['generator'] =$xml->생성기;
$channel['언어'] =$xml->언어;
// 3단계: 기사 가져오기
foreach($xml->채널->itemas$item){
$article=배열();
$article['channel']=$blog;
$article['title']=$item->제목;
$article['link']=$item->링크;
$article['comments']=$item->댓글;
$article['pubDate']=$item->pubDate;
$article['timestamp']=strtotime($item->pubDate);
$article['description']=(string)trim($item->description);
$article['isPermaLink']=$item->guid['isPermaLink'];
// 네임스페이스에 있는 데이터를 가져옵니다.
$content=$item->children($ns['content']);
$dc =$item->children($ns['dc']);
$wfw =$item->children($ns['wfw']);
$article['creator']=(string)$dc->창조자;
foreach($dc->subjectas$subject)
$article['subject'][]=(string)$subject;
$article['content']=(string)trim($content->encoded);
$article['commentRss']=$wfw->commentRss;
// 이 기사를 목록에 추가합니다.
$articles[$article['timestamp']]=$article;
}
이 예에서는 children 메소드를 사용하여 네임스페이스의 데이터를 얻습니다.
PLAIN TEXT
PHP:
$dc =$item->children($ns['dc']);