php xml Parser函數應用執行個體

來源:互聯網
上載者:User

xml 函數是 php 核心的組成部分。無需安裝即可使用這些函數。
php xml parser 函數
php:指示支援該函數的最早的 php 版本。

函數 描述 php
utf8_decode() 把 utf-8 字串解碼為 iso-8859-1。 3
utf8_encode() 把 iso-8859-1 字串編碼為 utf-8。 3
xml_error_string() 擷取 xml 解析器的錯誤描述。 3
xml_get_current_byte_index() 擷取 xml 解析器的當前位元組索引。 3
xml_get_current_column_number() 擷取 xml 解析器的當前列號。 3
xml_get_current_line_number() 擷取 xml 解析器的當前行號。 3
xml_get_error_code() 擷取 xml 解析器錯誤碼。 3
xml_parse() 解析 xml 文檔。 3
xml_parse_into_struct() 把 xml 資料解析到數組中。 3
xml_parser_create_ns() 建立帶有命名空間支援的 xml 解析器。 4
xml_parser_create() 建立 xml 解析器。 3
xml_parser_free() 釋放 xml 解析器。 3
xml_parser_get_option() 從 xml 解析器擷取選項設定資訊。 3
xml_parser_set_option() 為 xml 解析進行選項設定。 3
xml_set_character_data_handler() 建立字元資料處理器。 3
xml_set_default_handler() 建立預設的資料處理器。 3
xml_set_element_handler() 建立起始和終止元素處理器。 3
xml_set_end_namespace_decl_handler() 建立終止命名空間宣各處理器。 4
xml_set_external_entity_ref_handler() 建立外部實體處理器。 3
xml_set_notation_decl_handler() 建立注釋宣各處理器。 3
xml_set_object() 在對象中使用 xml 解析器。 4
xml_set_processing_instruction_handler() 建立處理指示(pi)處理器。 3
xml_set_start_namespace_decl_handler() 建立起始命名空間宣各處理器。 4
xml_set_unparsed_entity_decl_handler() 建立未解析實體定義宣各處理器。 3

*/
$file="test.xml";            //定義xml檔案
$character_data_on=false;         //定義布爾變數
$tag_complete=true;           //定義布爾變數
function startelement($parser,$name,$attrs)       //定義起始回呼函數
{
  global $character_data_on;
  global $tag_complete;
  echo "&lt;<font color="#0000cc">$name</font>";
  if (sizeof($attrs))
  {
    while(list($k,$v)=each($attrs))
    {
      echo "<font color="#009900">$k</font>="<fontcolor="#990000">$v</font>"";
    }
  }
  $tag_complete=false;          //定義布爾型變數
  $character_data_on=false;         //定義布爾型變數
}
function endelement($parser,$name)       //定義終止回呼函數
{
  global $fp;
  global $character_data_on;
  global $tag_complete;
  if(!$character_data_on)
  {
    $temp_fp=ftell($fp);
    $end_element_byte_index=xml_get_current_byte_index($parser);
    fseek($fp,$end_element_byte_index-2);
    $validator=fgets($fp,3);
    fseek($fp,$temp_fp);
    if($validator=="/>")
    {
      echo " /&gt";
    }
    else echo "&gt&lt/<font color="#0000cc">$name</font>&gt";
    $tag_complete = true;
  }
  else echo "&lt/<font color="#0000cc">$name</font>&gt";
  $character_data_on=false;
}
function characterdata($parser,$data)       //定義回呼函數
{
  global $character_data_on;
  global $tag_complete;
  if((!$character_data_on)&&(!$tag_complete))
  {
    echo "&gt";
    $tag_complete=true;
  }
  echo "<b>$data</b>";
  $character_data_on=true;
}
$xml_parser=xml_parser_create();        //建立xml解析器
xml_parser_set_option($xml_parser,xml_option_case_folding,false); //對解析器進行設定
xml_set_element_handler($xml_parser,"startelement", "endelement");  //建立起止元素處理器
xml_set_character_data_handler($xml_parser,"characterdata");   //建立字元資料處理器
if(!($fp=fopen($file,"r")))           //如果檔案開啟失敗
{
  die("could not open xml input");         //輸出錯誤資訊
}
echo "<pre>";
while($file_content=fread($fp,4096))         //迴圈讀取內容
{
  if(!xml_parse($xml_parser,$file_content,feof($fp)))
  {
    die(sprintf("xml error: %s at line %d",
    xml_error_string(xml_get_error_code($xml_parser)),
    xml_get_current_line_number($xml_parser)));
  }
}
echo "</pre>";
xml_parser_free($xml_parser);          //釋放xml解析器
?>

執行個體二

<?php
class xmlparser            //定義一個類
{
  var $xmlparser;            //類的屬性
  function xmlparser()           //類的方法
  {
    $this->xmlparser=xml_parser_create();
    xml_set_object($this->xmlparser,$this);
    xml_set_character_data_handler($this->xmlparser,"char");
    xml_set_element_handler($this->xmlparser,"start_tag","end_tag");
  }
  function parse($data)           //類的方法
  {
    xml_parse($this->xmlparser,$data);
  }
  function parse_file($xmlfile)          //類的方法
  {
    $fp=fopen($xmlfile,'r');
    while($xmldata=fread($fp, 4096))
    {
      if(!xml_parse($this->xmlparser,$xmldata))
      {
        die( print "error:".
        xml_error_string(xml_get_error_code($this->xmlparser))."<br/>line:".
        xml_get_current_line_number($this->xmlparser)."<br/>column:".
        xml_get_current_column_number($this->xmlparser)."<br/>");
      }
    }
  }
  function start_tag($xmlparser,$tag,$attributes)      //類的方法
  {
    print $tag."<br/>";
  }
  function end_tag()            //類的方法
  {
  }
  function char($xmlparser,$data)         //類的方法
  {
    echo $data."<br/>";
  }
  function close_parser()           //類的方法
  {
    xml_parser_free($this->xmlparser);
  }
}
$myxmlparser=new xmlparser();         //為類初始化一個對象
$myxmlparser->parse_file("test.xml");        //調用類的讀取檔案方法
$myxmlparser->close_parser();          //調用類的關閉方法
/*
php xml parser 常量
constant
xml_error_none (integer)
xml_error_no_memory (integer)
xml_error_syntax (integer)
xml_error_no_elements (integer)
xml_error_invalid_token (integer)
xml_error_unclosed_token (integer)
xml_error_partial_char (integer)
xml_error_tag_mismatch (integer)
xml_error_duplicate_attribute (integer)
xml_error_junk_after_doc_element (integer)
xml_error_param_entity_ref (integer)
xml_error_undefined_entity (integer)
xml_error_recursive_entity_ref (integer)
xml_error_async_entity (integer)
xml_error_bad_char_ref (integer)
xml_error_binary_entity_ref (integer)
xml_error_attribute_external_entity_ref (integer)
xml_error_misplaced_xml_pi (integer)
xml_error_unknown_encoding (integer)
xml_error_incorrect_encoding (integer)
xml_error_unclosed_cdata_section (integer)
xml_error_external_entity_handling (integer)
xml_option_case_folding (integer)
xml_option_target_encoding (integer)
xml_option_skip_tagstart (integer)
xml_option_skip_white (integer)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.