解析XML的三种方法详解

1.     简介XML

 XML:可扩展性标记语言(用户可以自定义标签)。

2.     HTML:超文本标记语言(超出文本表示的范围)

3.     XML的用途:

(1)    存储和传输数据

(2)     作为小型的数据库使用

(3)     保存项目的一些配置文件

4.     在表示非常复杂的数据时,一般采用XML或者json

5.     XML语法规则:

1,         必须有且只有一个根元素

2,         属性值建议用双引号引起来

3,         所有元素必须闭合

4,         如果XML中有特殊字符,需要引用实体

   <  -------- &lt;

Ø       -------- &gt;

&  --------&amp;

‘  --------&apos;

“ -------- &quot;

6.     PHP如何操作XML

(1)DOM方法解析

1.     XML DOM -----  XML文档转化成PHP可以操作的对象。

2.     常用的一些概念:

DOMDocument  ------   操作整个节点树

DOMElement    ------   操作DOM节点树种某个元素节点

DOMNodeList   ------   操作DOM节点树中某些元素(节点)的集合

3.     解析的步骤:

1,         实例化当前需要的对象(DOMDocument对象)

2,         告知DOMDocument对象去解析的对象(load()

3,         告知标签名找元素(getElementByTagName( ))

4,         通过DOMNodeList对象的item( )方法根据索引(下标从0开始)获得某个节点

5,         如果下面还有子节点继续使用getElementByTagName( )寻找,一直找到具体的元素

6,         再通过nodeValue获得其值

(2)SAX解析XML

原理:遇到标签解析标签,遇到数据解析数据,解析完后处理数据。

解析器解析数据用到的函数:

1 xml_parser_create()  创建一个解析器,参数是编码

 例如:$parser=xml_parser_create(utf-8)

2 xml_set_element_handler()遇到标签怎么处理, 参数1:创建解析器的名称,参数2:遇到开始标签的处理函数,

参数3:遇到结束标签的处理函数

例如:xml_set_element_handler($parser,start_element,stop_element)

3 xml_set_character_data_handler()遇到数据怎么处理

 参数1:解析器名

 参数2:结束标签的名字 

  例如:xml_set_character_data_handler($parser,'data_process')

遇到数据之后的处理:

参数1:解析器名

参数2:遇到的数据

function data_process()($parser,$data){

echo '数据是:'.$data."<br>";

}

xml_get_error_code( )获得错误的代码(几号错误)

xml_error_string( ) 根据错误编号显示对应的错误信息

(3)simpleXML解析XML文件

原理:simpleXMLElement这个对象会将所有的XML的元素转化成对象,相同的元素名转化成对象的集合。

1,访问一个节点:访问元素的属性,通过数组下标的形式

   $id=$book[0][‘id’]

2,如果获得是一个对象的集合,foreach 遍历

3,如果要找到具体的某一个元素,通过数组索引

获得author title的内容

$first_book=$books[0];

Foreach($books as $book){

  Echo $book->author;

Echo $book->title;

}

4,增加一个节点

 假设$sex为根节点

 $new_book=$sex->addChild(‘book’);

 $new_book=addChild(‘title’,’笑傲江湖’)

$sex->asXML(‘book.xml’);//保存到book.xml文件中

5,删除一个节点

 $book=$sex->book[2];//确定删除的书

   unset($book);

6,修改节点

 $sex->book[3]->author=’古龙//修改第四本书的author属性的值,修改成‘古龙’。

    

 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值