最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2010年04月07日 14:52:26   作者:  
用PHP讀取和編寫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)的類型來設(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 方法把圖書 XML 裝入這個(gè)對(duì)象。之后,腳本 用 getElementsByName 方法得到指定名稱下的所有元素的列表。
在 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)存中容納所有圖書和圖書信息,g_elem 變量保存腳本目前正在處理的標(biāo)記的名稱。然后腳 本定義回調(diào)函數(shù)。在這個(gè)示例中,回調(diào)函數(shù)是 startElement、endElement 和 textData。在打開和關(guān)閉標(biāo)記的時(shí)候,分別調(diào) 用 startElement 和 endElement 函數(shù)。在開始和結(jié)束標(biāo)記之間的文本上面,調(diào)用 textData。
在這個(gè)示例中,startElement 標(biāo)記查找 book 標(biāo)記,在 book 數(shù)組中開始一個(gè)新元素。然 后,textData 函數(shù)查看當(dāng)前元素,看它是不是 publisher、title 或 author 標(biāo)記。如果是,函數(shù)就把當(dāng)前文本放入當(dāng)前圖 書。
為了讓解析繼續(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á)式讀取直接來自用戶 的 XML,因?yàn)闊o法控制這類 XML 的格式或結(jié)構(gòu)。應(yīng)當(dāng)一直用 DOM 庫(kù)或 SAX 解析器讀取來自用戶的 XML。
*/
// 用 DOM 編寫 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();

/*
在腳本的頂部,用一些示例圖書裝入了 books 數(shù)組。這個(gè)數(shù)據(jù)可以來自用戶也可以來自數(shù)據(jù)庫(kù)。
示例圖書裝入之后,腳本創(chuàng)建一個(gè) new DOMDocument,并把根節(jié)點(diǎn) books 添加到它。然后腳本為每本書 的 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 編寫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 mysql Errcode: 28 終極解決方法

    php mysql Errcode: 28 終極解決方法

    php mysql Errcode: 28 終極解決方法,碰到這類問題的朋友可以參考下。
    2009-07-07
  • PHP中session使用方法詳解

    PHP中session使用方法詳解

    在PHP開發(fā)中對(duì)比起Cookie,session 是存儲(chǔ)在服務(wù)器端的會(huì)話,相對(duì)安全,并且不像 Cookie 那樣有存儲(chǔ)長(zhǎng)度限制,本文簡(jiǎn)單介紹 session 的使用
    2007-03-03
  • 基于PHP做個(gè)圖片防盜鏈

    基于PHP做個(gè)圖片防盜鏈

    本文主要介紹了Referer原理與圖片防盜鏈實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Referer頭信息原理與圖片防盜鏈判定、實(shí)現(xiàn)方法,并附帶一個(gè)Http請(qǐng)求封裝類,需要的朋友可以參考下
    2022-12-12
  • php事務(wù)處理實(shí)例詳解

    php事務(wù)處理實(shí)例詳解

    這篇文章主要介紹了php事務(wù)處理實(shí)例詳解,需要的朋友可以參考下
    2014-07-07
  • PHP正則替換函數(shù)preg_replace()報(bào)錯(cuò):Notice Use of undefined constant的解決方法分析

    PHP正則替換函數(shù)preg_replace()報(bào)錯(cuò):Notice Use of undefined constant的解

    這篇文章主要介紹了PHP正則替換函數(shù)preg_replace()報(bào)錯(cuò):Notice Use of undefined constant的解決方法,結(jié)合具體實(shí)例形式分析了preg_replace()報(bào)錯(cuò)的原因與相關(guān)解決技巧,需要的朋友可以參考下
    2017-02-02
  • php計(jì)算title標(biāo)題相似比的方法

    php計(jì)算title標(biāo)題相似比的方法

    這篇文章主要介紹了php計(jì)算title標(biāo)題相似比的方法,實(shí)例分析了php中similar_text方法計(jì)算字符串相似度的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 非常不錯(cuò)的MySQL優(yōu)化的8條經(jīng)驗(yàn)

    非常不錯(cuò)的MySQL優(yōu)化的8條經(jīng)驗(yàn)

    php開發(fā)中,一定要考慮mysql的執(zhí)行效率,下面的文章,可以很好的盡量避免的一些問題,學(xué)習(xí)php人要掌握這也是高手與菜鳥的區(qū)別,不是能做出來就叫高手的
    2008-03-03
  • PHP實(shí)現(xiàn)通過二維數(shù)組鍵值獲取一維鍵名操作示例

    PHP實(shí)現(xiàn)通過二維數(shù)組鍵值獲取一維鍵名操作示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)通過二維數(shù)組鍵值獲取一維鍵名操作,涉及php數(shù)組遍歷、判斷、搜索等相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • PHP parse_ini_file函數(shù)的應(yīng)用與擴(kuò)展操作示例

    PHP parse_ini_file函數(shù)的應(yīng)用與擴(kuò)展操作示例

    這篇文章主要介紹了PHP parse_ini_file函數(shù)的應(yīng)用與擴(kuò)展操作,結(jié)合實(shí)例形式分析了php擴(kuò)展parse_ini_file函數(shù)解析配置文件相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • PHP的反射機(jī)制實(shí)例詳解

    PHP的反射機(jī)制實(shí)例詳解

    這篇文章主要介紹了PHP的反射機(jī)制,結(jié)合實(shí)例形式詳細(xì)分析了php反射機(jī)制的功能、原理、獲取屬性、注釋、方法相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03

最新評(píng)論

汝州市| 金塔县| 河东区| 灌南县| 金乡县| 汉沽区| 高雄县| 盘山县| 外汇| 大化| 莲花县| 定南县| 潞城市| 苗栗市| 安宁市| 南充市| 莲花县| 武清区| 蒲江县| 阿城市| 阿拉善右旗| 高密市| 富裕县| 万宁市| 大庆市| 丹巴县| 锡林浩特市| 鄂托克前旗| 军事| 古田县| 井陉县| 偃师市| 建宁县| 拜城县| 涡阳县| 上思县| 武乡县| 建阳市| 获嘉县| 揭阳市| 儋州市|