1.生成XML爲字符串
header('Content-Type: text/xml');
print '<?xml version="1.0">'."\n";
print '<shows>';
$shows = array(array('name' => 'Simpsons',
'channel' => 'FOX',
'start' => '8:00PM',
'duration' => '30'),
array('name' => 'Law & Order',
'channel' => 'NBC',
'start' => '8:00PM',
'duration' => '60'));
foreach ($shows as $show) {
print "<show>\n";
foreach ($show as $tag => $data) {
print "<$tag>".htmlspecialchars($data)."</$tag>\n";
}
print "</show>\n";
}
print "<shows>\n";
首先需要header()爲該文檔設置正確的Content-Type,還有必須對實體進行轉義
2.通過DOM生成XML:通過DOM擴展來創建一個DOMDocument對象
// 創建一個新文檔
$dom = new DOMDocument('1.0');
// 創建根元素,<book>,並將其添加到文檔
$book = $dom->appendChild($dom->createElement('book'));
// 創建一個title元素並將其添加到book中
$title = $book->appendChild($dom->createElement('title'));
$title->appendChild($dom->createTextNode('PHP Cookbook'));
$title->setAttribute('cover', 'soft');
$dom->formatOutput =true;
echo $dom->saveXML();
3.解析基本的XML文檔:使用simplexml
$ab = simplexml_load_file('address.xml');
foreach ($ab->person as $person) {
$firstname = $person->firstname;
$lastname = $person->lastname;
echo "$firstname $lastname\n";
}
4.解析更復雜的XML文檔:使用DOM擴展
$dom = new DOMDocument;
$dom->load('address.xml');
foreach ($dom->getElementsByTagName('person') as $person) {
$firstname = $person->getElementsByTagName('firstname');
$firstname_text_value = $firstname->item(0)->firstchild->nodevalue;
$lastname = $person->getElementsByTagName('lastname');
$lastname_text_value = $lastname->item(0)->lastchild->nodevalue;
print "$firstname_text_value $lastname_text_value\n";
}
5.解析大型XML文檔:使用XMLReader
6.用XPath來提取信息
$s = simplexml_load_file('address.xml');
$people = $s->xpath('address-book/person');
foreach ($people as $p) {
list($firstname) = $p->xpath('firstname');
list($lastname) = $p->xpath('lastname');
print "$firstname $lastname\n";
}
7.通過XSLT轉換XML:使用XSLT擴展
// 加載 XSL 模板
$xsl = new DOMDocument();
$xsl->load('stylesheet.xsl');
// 創建一個新的XSLTProcessor對象
$xslt = new XSLTProcessor();
// 加載樣式表
$xslt->importStylesheet($xsl);
// 加載 XML 文檔
$xml = new DOMDocument();
$xml->load('data.xml');
// 轉換成字符串
$results = $xslt->transformToXml($xml);
// 轉換成一個文件
$results = $xslt->transformToUri();
// 轉換成DOM對象
$results = $xslt->transformToDoc();
8.在PHP中設置XSLT參數:使用XSLTProcessor::setParameter()方法
9.在XSLT樣式表中調用PHP函數:調用XSLTProcessor::registerPHPFunctions()方法來實現
10.使用內容編碼:在將其傳遞給XML擴展之前使用iconv庫進行轉換
11.讀取RSS和Atom源:使用MagpieRSS解析器
require('rss_fetch.inc');
$feed = 'http://news.php.net/group.php?group=php.announce&format=rss';
$rss = fetch_rss($feed);
print "<ul>\n";
foreach ($rss->items as $item) {
print '<li><a href="'.$item['link'] . '">'.$item['title']."</a></li>\n";
}
print "</ul>\n";
12.生成RSS源:根據自己的數據生成RSS源,以便對你的內容整合
class rss2 extends DOMDocument {
private $channel;
public function __construct($title, $link, $description) {
parent::__construct();
$this->formatOutput = true;
$root = $this->appendChild($this->createElement('rss'));
$root->setAttribute('version', '2.0');
$channel = $root->appendChild($this->createElement('channel'));
$channel->appendChild($this->createElement('title', $title));
$channel->appendChild($this->createElement('link', $link));
$channel->appendChild($this->createElement('description', $description));
$this->channel = $channel;
}
public function addItem($title, $link, $description) {
$item = $this->createElement('item');
$item->appendChild($this->createElement('title', $title));
$item->appendChild($this->createElement('link', $link));
$item->appendChild($this->createElement('description', $description));
$this->channel->appendChild($item);
}
}
$rss = new rss2('Channel Title', 'http://www.zhangmin.com', 'Channel Description');
$rss->addItem('Item1', 'http://www.me.com', 'desc');
$rss->addItem('Item1', 'http://www.me.com', 'desc');
print $rss->saveXML();