亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
PHP課程 / XML Expat

XML Expat

XML Expat 解析器

Expat 解析器是一個基于事件的解析器。

請看以下的 XML 片段:

<from>Jani</from>

一個基于事件的解析器會將上述 XML 報告為一系列三個事件:

  • 開始元素:from
  • 開始 CDATA 部分,值:Jani
  • 關(guān)閉元素:from

XML Expat 解析器函數(shù)是 PHP 核心的一部分。使用這些函數(shù)無需安裝。

XML 文件

在下面的例子中將使用 XML 文件 "note.xml":

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

初始化 XML Expat 解析器

我們希望在PHP中初始化 XML Expat 解析器,為不同的 XML 事件定義一些處理程序,然后解析 XML 文件。

實例

<?php
// 初始化 XML 解析器
$parser=xml_parser_create();

// 在元素開始時使用的函數(shù)
function start($parser,$element_name,$element_attrs) {
  switch($element_name) {
    case "NOTE":
    echo "-- Note --<br>";
    break;
    case "TO":
    echo "To: ";
    break;
    case "FROM":
    echo "From: ";
    break;
    case "HEADING":
    echo "Heading: ";
    break;
    case "BODY":
    echo "Message: ";
  }
}

// 在元素結(jié)束時使用的函數(shù)
function stop($parser,$element_name) {
  echo "<br>";
}

// 在找到字符數(shù)據(jù)時使用的函數(shù)
function char($parser,$data) {
  echo $data;
}

// 指定元素處理程序
xml_set_element_handler($parser,"start","stop");

// 指定數(shù)據(jù)處理程序
xml_set_character_data_handler($parser,"char");

// 打開 XML 文件
$fp=fopen("note.xml","r");

// 讀取數(shù)據(jù)
while ($data=fread($fp,4096)) {
  xml_parse($parser,$data,feof($fp)) or
  die (sprintf("XML 錯誤:%s at line %d",
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
}

// 釋放 XML 解析器
xml_parser_free($parser);
?>

運行實例

例子解釋:

  • 使用 xml_parser_create() 函數(shù)初始化 XML 解析器
  • 創(chuàng)建與不同事件處理程序一起使用的函數(shù)
  • 添加 xml_set_element_handler() 函數(shù),以指定解析器在遇到開始和結(jié)束標記時將執(zhí)行哪個函數(shù)
  • 添加 xml_set_character_data_handler() 函數(shù),以指定解析器在遇到字符數(shù)據(jù)時將執(zhí)行哪個函數(shù)
  • 使用 xml_parse() 函數(shù)解析 "note.xml" 文件
  • 如果出現(xiàn)錯誤,請?zhí)砑?xml_error_string() 函數(shù)以將 XML 錯誤轉(zhuǎn)換為文本描述
  • 調(diào)用 xml_parser_free() 函數(shù),以釋放使用 xml_parser_create() 函數(shù)分配的內(nèi)存

PHP XML Expat 解析器參考手冊

有關(guān) PHP Expat 函數(shù)的更多信息,請訪問我們的 PHP XML 解析器參考手冊。