php xml Parser函数应用实例

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)

时间: 2024-09-28 11:07:12

php xml Parser函数应用实例的相关文章

PHP生成sitemap.xml地图函数_php实例

复制代码 代码如下: <?php /** *    网站地图更新控制器 * *    @author    Garbin *    @usage    none */class SitemapApp extends FrontendApp{    function __construct()    {        $this->SitemapApp();    }    function SitemapApp()    {        parent::__construct();     

PHP XML数据解析代码[json,parser函数]

 代码如下 复制代码 //xml string $xml_string="<?xml version='1.0'?> <users> <user id='398'> <name>Foo</name> <email>foo@bar.com</name> </user> <user id='867'> <name>Foobar</name> <email>f

asp.net 将一个图片以二进制值的形式存入Xml文件中的实例代码

这篇文章介绍了将一个图片以二进制值的形式存入Xml文件中的实例代码,有需要的朋友可以参考一下   复制代码 代码如下: try    {     int readByte = 0;        //     int bytesToRead = 100;       //数据缓冲区大小     string fileName = "../../WriteXml.xml";   //要打开的文件     //   this.textBox1.Text = string.Empty;   

php内嵌函数用法实例

 这篇文章主要介绍了php内嵌函数用法,实例分析了php内嵌函数的调用方法与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php内嵌函数用法.分享给大家供大家参考.具体分析如下: php中可以在函数内部内嵌一个函数,调用范围仅限于函数本身 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?php function msg() { echo("<center><

php定义参数数量可变的函数用法实例

 这篇文章主要介绍了php定义参数数量可变的函数用法,实例分析了func_get_args的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php定义参数数量可变的函数用法.分享给大家供大家参考.具体分析如下: php中的的函数参数可以不固定,甚至不用定义参数,在函数内部使用func_get_args()函数获得参数列表,调用时可以为函数指定任意参数,非常方便 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php function addanyt

js常用系统函数用法实例分析

 这篇文章主要介绍了js常用系统函数用法,实例分析了escape.parseInt.parseFloat.isNaN.isFinite等函数的用法,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了js常用系统函数用法.分享给大家供大家参考. 具体代码如下: 代码如下: <html> <head> </head> <body> <script type="text/javascript"> //1. escap

JavaScript中匿名函数用法实例

 这篇文章主要介绍了JavaScript中匿名函数用法,实例分析了javascript中匿名函数的功能.定义及具体用法,需要的朋友可以参考下     本文实例讲述了JavaScript中匿名函数用法.分享给大家供大家参考.具体分析如下: JS中可以不用给函数名称,而是在使用时直接通过function把函数体赋值给相关的事件或者变量. 下面的JS代码给按钮设定了一个onclick事件,使用了匿名函数 ? 1 2 3 4 5 6 7 8 9 <form action="#">

flash 加载 xml的导航菜单实例代码

flash 加载 xml的导航菜单实例代码 //Stage.align = "TL"; //Stage.scaleMode = "noScale"; System.useCodepage = true; ///////////////////////// var srcFoot:Object; var navLeng:Number; var nav_xml:XML = new XML(); nav_xml.ignoreWhite = true; nav_xml.on

javascript-js事件绑定的时候,绑定的函数是实例吗

问题描述 js事件绑定的时候,绑定的函数是实例吗 请问js事件绑定的时候,绑定的函数是实例吗,我感觉是的,因为每个绑定的function中的变量都不一样 解决方案 js中一切东西都是对象,函数也是 var obj = function(){} 你使用这个obj和使用一个对象思想是一致的. 既然是对象那当然是实例 另外说点题外话 js中一切都是对象,函数是一等公民,注意没有类啊 比如我们的Object,Array,Number,等他们都是函数,并不是我们类比Java等其他语言中的类一样 var o