亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

用PHP實(shí)現(xiàn)讀取和編寫(xiě)XML DOM代碼

 更新時(shí)間:2010年04月07日 14:52:26   作者:  
用PHP讀取和編寫(xiě)XML DOM代碼,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:

// 用 DOM 讀取 XML
$doc = new DOMDocument();
$doc->load(‘test.xml');
$books = $doc->getElementsByTagName(“book”);
foreach( $books as $book ){
$authors = $book->getElementsByTagName(“author”);
$author = $authors->item(0)->nodeValue; // nodeValue屬 性可根據(jù)節(jié)點(diǎn)的類(lèi)型來(lái)設(shè)置或返回某個(gè)節(jié)點(diǎn)的值。
$publishers = $book->getElementsByTagName(“publisher”);
$publisher = $publishers->item(0)->nodeValue;
$titles = $book->getElementsByTagName( ”title” );
$title = $titles->item(0)->nodeValue;
echo ”Title: $title <br> Author: $author <br> Publisher: $publisher<br><hr><br>”;
}

/*
腳本首先創(chuàng)建一個(gè) new DOMdocument 對(duì)象,用 load 方法把圖書(shū) XML 裝入這個(gè)對(duì)象。之后,腳本 用 getElementsByName 方法得到指定名稱(chēng)下的所有元素的列表。
在 book 節(jié)點(diǎn)的循環(huán)中,腳本用 getElementsByName 方法獲得 author、 publisher 和 title 標(biāo)記的 nodeValue。nodeValue 是節(jié)點(diǎn)中的文本。腳本然后顯示這些值。
*/
復(fù)制代碼 代碼如下:

// 用 SAX 解析器讀取 XML
$g_books = array();
$g_elem = null;
function startElement( $parser, $name, $attrs ){
global $g_books, $g_elem;
if ( $name == 'BOOK' ) $g_books []= array();
$g_elem = $name;
}
function endElement( $parser, $name ){
global $g_elem;
$g_elem = null;
}
function textData( $parser, $text ){
global $g_books, $g_elem;
if ( $g_elem == 'AUTHOR' || $g_elem == 'PUBLISHER' || $g_elem == 'TITLE' ){
$g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text;
}
}
$parser = xml_parser_create();
xml_set_element_handler( $parser, ”startElement”, ”endElement” );
xml_set_character_data_handler( $parser, ”textData” );
$f = fopen( 'test.xml', 'r' );
while( $data = fread( $f, 4096 ) ){
xml_parse( $parser, $data );
}
xml_parser_free( $parser );
foreach( $g_books as $book ){
echo $book['TITLE'].” - ”.$book['AUTHOR'].” - ”;
echo $book['PUBLISHER'].”\n”;
}

/*
腳本首先設(shè)置 g_books 數(shù)組,它在內(nèi)存中容納所有圖書(shū)和圖書(shū)信息,g_elem 變量保存腳本目前正在處理的標(biāo)記的名稱(chēng)。然后腳 本定義回調(diào)函數(shù)。在這個(gè)示例中,回調(diào)函數(shù)是 startElement、endElement 和 textData。在打開(kāi)和關(guān)閉標(biāo)記的時(shí)候,分別調(diào) 用 startElement 和 endElement 函數(shù)。在開(kāi)始和結(jié)束標(biāo)記之間的文本上面,調(diào)用 textData。
在這個(gè)示例中,startElement 標(biāo)記查找 book 標(biāo)記,在 book 數(shù)組中開(kāi)始一個(gè)新元素。然 后,textData 函數(shù)查看當(dāng)前元素,看它是不是 publisher、title 或 author 標(biāo)記。如果是,函數(shù)就把當(dāng)前文本放入當(dāng)前圖 書(shū)。
為了讓解析繼續(xù),腳本用 xml_parser_create 函數(shù)創(chuàng)建解析器。然后,設(shè)置回調(diào)句柄。之后,腳本讀取文件并把文件的大塊 內(nèi)容發(fā)送到解析器。在文件讀取之后,xml_parser_free 函數(shù)刪除解析器。腳本的末尾輸出 g_books 數(shù)組的內(nèi)容。
*/
// 用正則表達(dá)式解析 XML
復(fù)制代碼 代碼如下:

$xml = ”";
$f = fopen( 'test.xml', 'r' );
while( $data = fread( $f, 4096 ) ) { $xml .= $data; }
fclose( $f );
preg_match_all( ”/\<book\>(.*?)\<\/book\>/s”, $xml, $bookblocks );
foreach( $bookblocks[1] as $block ){
preg_match_all( ”/\<author\>(.*?)\<\/author\>/”, $block, $author );
preg_match_all( ”/\<title\>(.*?)\<\/title\>/”, $block, $title );
preg_match_all( ”/\<publisher\>(.*?)\<\/publisher\>/”, $block, $publisher );
echo( $title[1][0].” - ”.$author[1][0].” - ”. $publisher[1][0].”\n” );
}

/*
我從不建議使用正則表達(dá)式讀取 XML,但是有時(shí)它是兼容性最好的方式,因?yàn)檎齽t表達(dá)式函數(shù)總是可用的。不要用正則表達(dá)式讀取直接來(lái)自用戶(hù) 的 XML,因?yàn)闊o(wú)法控制這類(lèi) XML 的格式或結(jié)構(gòu)。應(yīng)當(dāng)一直用 DOM 庫(kù)或 SAX 解析器讀取來(lái)自用戶(hù)的 XML。
*/
// 用 DOM 編寫(xiě) XML
復(fù)制代碼 代碼如下:

$books = array();
$books [] = array(
'title' => 'PHP Hacks',
'author' => 'Jack Herrington',
'publisher' => ”O(jiān)'Reilly”
);
$books [] = array(
'title' => 'Podcasting Hacks',
'author' => 'Jack Herrington',
'publisher' => ”O(jiān)'Reilly”
);
$doc = new DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement( ”books” );
$doc->appendChild( $r );
foreach( $books as $book ){
$b = $doc->createElement( ”book” );
$author = $doc->createElement( ”author” );
$author->appendChild( $doc->createTextNode( $book['author'] ) );
$b->appendChild( $author );
$title = $doc->createElement( ”title” );
$title->appendChild( $doc->createTextNode( $book['title'] ) );
$b->appendChild( $title );
$publisher = $doc->createElement( ”publisher” );
$publisher->appendChild( $doc->createTextNode( $book['publisher'] ) );
$b->appendChild( $publisher );
$r->appendChild( $b );
}
//echo $doc->saveXML();

/*
在腳本的頂部,用一些示例圖書(shū)裝入了 books 數(shù)組。這個(gè)數(shù)據(jù)可以來(lái)自用戶(hù)也可以來(lái)自數(shù)據(jù)庫(kù)。
示例圖書(shū)裝入之后,腳本創(chuàng)建一個(gè) new DOMDocument,并把根節(jié)點(diǎn) books 添加到它。然后腳本為每本書(shū) 的 author、title 和 publisher 創(chuàng)建節(jié)點(diǎn),并為每個(gè)節(jié)點(diǎn)添加文本節(jié)點(diǎn)。每個(gè) book 節(jié)點(diǎn)的最后一步是重新把它添加到根節(jié) 點(diǎn) books。
使用 DOM 的真正價(jià)值在于它創(chuàng)建的 XML 總是格式正確的。但是如果不能用 DOM 創(chuàng)建 XML 時(shí)該怎么辦?
Xml代碼
復(fù)制代碼 代碼如下:

<?php
PHP 編寫(xiě)xml
$books = array();
$books [] = array(
'title' => 'PHP Hacks',
'author' => 'Jack Herrington',
'publisher' => ”O(jiān)'Reilly”
);
$books [] = array(
'title' => 'Podcasting Hacks',
'author' => 'Jack Herrington',
'publisher' => ”O(jiān)'Reilly”
);
?>
<books>
<?php
foreach( $books as $book )
{
?>
<book>
<title><?php echo( $book['title'] ); ?></title>
<author><?php echo( $book['author'] ); ?>
</author>
<publisher><?php echo( $book['publisher'] ); ?>
</publisher>
</book>
<?php
}
?>
</books>

實(shí)例中用到的 test.xml 如下:
復(fù)制代碼 代碼如下:

<?xml version=”1.0″ encoding=”utf8″?>
<books>
<book>
<author>Jack Herrington</author>
<title>PHP Hacks</title>
<publisher>O'Reilly</publisher>
</book>
<book>
<author>Jack Herrington</author>
<title>Podcasting Hacks</title>
<publisher>O'Reilly</publisher>
</book>
</books>

相關(guān)文章

  • PHP 編寫(xiě)大型網(wǎng)站問(wèn)題集

    PHP 編寫(xiě)大型網(wǎng)站問(wèn)題集

    是否容易維護(hù)、是否足夠健壯、否效率足夠高、是否足夠安全,當(dāng)PHP用于建立大型網(wǎng)站時(shí)這些就成為很關(guān)鍵的因素。
    2010-05-05
  • php PDO屬性設(shè)置與操作方法分析

    php PDO屬性設(shè)置與操作方法分析

    這篇文章主要介紹了php PDO屬性設(shè)置與操作方法,結(jié)合實(shí)例形式分析了php pdo常見(jiàn)屬性功能及相關(guān)的設(shè)置、獲取操作技巧,需要的朋友可以參考下
    2018-12-12
  • PHP抽象類(lèi)與接口的區(qū)別實(shí)例詳解

    PHP抽象類(lèi)與接口的區(qū)別實(shí)例詳解

    這篇文章主要介紹了PHP抽象類(lèi)與接口的區(qū)別,結(jié)合實(shí)例形式分析了php抽象類(lèi)與接口的概念、區(qū)別、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • PHP實(shí)現(xiàn)導(dǎo)出帶樣式的Excel

    PHP實(shí)現(xiàn)導(dǎo)出帶樣式的Excel

    有時(shí)客戶(hù)會(huì)向你抱怨,軟件為他們導(dǎo)出的Excel格式太難看了,或許這篇文章會(huì)對(duì)你有所幫助。在用PHP導(dǎo)出數(shù)據(jù)的同時(shí)還可以設(shè)置顏色、字號(hào)大小、加粗、合并單元格等等。
    2016-08-08
  • PHP進(jìn)階學(xué)習(xí)之反射基本概念與用法分析

    PHP進(jìn)階學(xué)習(xí)之反射基本概念與用法分析

    這篇文章主要介紹了PHP進(jìn)階學(xué)習(xí)之反射基本概念與用法,結(jié)合實(shí)例形式分析了php反射的概念、原理基本用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • php設(shè)計(jì)模式 Factory(工廠(chǎng)模式)

    php設(shè)計(jì)模式 Factory(工廠(chǎng)模式)

    定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定將哪一個(gè)類(lèi)實(shí)例化,使用一個(gè)類(lèi)的實(shí)例化延遲到其子類(lèi)
    2011-06-06
  • PHP實(shí)現(xiàn)的登錄頁(yè)面信息提示功能示例

    PHP實(shí)現(xiàn)的登錄頁(yè)面信息提示功能示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的登錄頁(yè)面信息提示功能,涉及php表單提交、數(shù)據(jù)庫(kù)查詢(xún)、判斷及session數(shù)據(jù)存儲(chǔ)等相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • php rsa 加密,解密,簽名,驗(yàn)簽詳解

    php rsa 加密,解密,簽名,驗(yàn)簽詳解

    這篇文章主要介紹了php rsa 加密,解密,簽名,驗(yàn)簽詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Laravel中使用FormRequest進(jìn)行表單驗(yàn)證方法及問(wèn)題匯總

    Laravel中使用FormRequest進(jìn)行表單驗(yàn)證方法及問(wèn)題匯總

    Laravel 5.0 帶來(lái)了FormRequests, 這是一種特殊的類(lèi)型, 用于在提交表單時(shí)進(jìn)行數(shù)據(jù)的檢查和驗(yàn)證. 每個(gè)FormRequest類(lèi)至少包含一個(gè)rules()方法, 這個(gè)方法返回一組驗(yàn)證規(guī)則. 除此之外還必須包含一個(gè)authorize()方法, 該方法返回一個(gè)布爾值, 代表是否允許用戶(hù)執(zhí)行本次請(qǐng)求.
    2016-06-06
  • php中__toString()方法用法示例

    php中__toString()方法用法示例

    這篇文章主要介紹了php中__toString()方法用法,結(jié)合實(shí)例形式分析了__toString()方法的功能與簡(jiǎn)單使用技巧,需要的朋友可以參考下
    2016-12-12

最新評(píng)論