RSS 소스 : http://feeds.nytimes.com/nyt/rss/World
domxml_open_mem() : XML 데이터를 파싱하여 DOM 객체(DomDocument)를 리턴한다.
DomDocument::get_elements_by_tagname() : 특정 태그 이름을 갖는 DomNode 들을 배열 형태로 리턴한다.
DomNode::child_nodes() : Node 가 포함하고 있는 Node 들을 배열 형태로 리턴한다.
DomNode::node_name() : 태그명을 리턴한다.
DomNode::get_content() : 태그가 갖고 있는 내용물을 리턴한다.
XML parsing 하는 소스
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf8">
<title>XML</title>
<style type="text/css">
div.item {border:2px solid black; margin:10px; padding:5px;}
span.item-name {font-weight:bold;}
</style>
</head>
<body>
<?
// Get XML Data
$url = "http://feeds.nytimes.com/nyt/rss/World";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$xml = curl_exec($curl);
$info = curl_getinfo($curl);
curl_close($curl);
// Parse XML Data
if (!$doc = domxml_open_mem($xml)) {
echo "Could not load xml...";
} else {
$items = $doc->get_elements_by_tagname("item");
foreach ($items as $item) {
?>
<div class="item">
<?
$id = 0;
$children = $item->child_nodes();
foreach ($children as $child) {
$name = $child->node_name();
if ($name != "#text") {
$content = $child->get_content();
$content = htmlspecialchars($content, ENT_QUOTES, "UTF-8");
$new = str_replace("\n", "< br / >", $content);
echo "<span class='item-name'>{$name} : </span>{$new}< br / >";
}
}
?></div><?
}
}
?>
</body>
</html>