PHP XML

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();

發佈了37 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章