PHP操作XML

PHP简单读取XML

PHP操作XML_第1张图片

DOM

DOM:Document object model,文档对象模型

节点的分类

  1. 元素节点
  2. 属性节点
  3. 值节点
  4. 注释节点
  5. 根节点(document才是根节点)

生成XML文档

PHP操作XML_第2张图片

读取XMl文档

PHP操作XML_第3张图片

递归遍历XML

nodeType的值

节点

1

元素节点

2

属性节点

9

根节点

3

值节点

值节点的名称是"#text"

根节点的名称是"#document"

';
function getChilds($node){
    echo "
    "; if($node->nodeType==3){//如果是值节点 echo "
  • ".$node->nodeValue."
  • "; } else{//不是值节点 echo "
  • ".$node->nodeName."
  • ";//取出元素节点的名称 if($node->attributes->length>0) {//节点的属性的个数大于0,表示此节点有属性 foreach ($node->attributes as $attr){ echo '
  • '.$attr->value.'
  • '; //取出节点的值 } } foreach ($node->childNodes as $child) {//遍历循环子元素 getChilds($child);//递归点 } } echo "
"; } $doc=new DOMDocument(); $doc->preserveWhiteSpace=false;//不保护空格,就是导入XML的时候,去掉空白字符 $doc->load("books.xml"); $root=$doc->documentElement;//获得最顶层元素 getChilds($root);

综合例题:对图书的操作

1、管理界面books_admin.php,

通过childnodes属性来获取所有子节点,然后再取子节点的值

PHP操作XML_第4张图片

通过firstchild和lastchild访问子节点

PHP操作XML_第5张图片

2、添加界面books_add.php

3、修改界面books_modify.php

PHP操作XML_第6张图片

4、删除

PHP操作XML_第7张图片

PHP操作XML_第8张图片

Xpath

通过DOM结构定位节点,在数据量很大时候速度下降的很厉害,解决方法是Xpath.

XPath的作用:用于快速定位节点。

PHP操作XML_第9张图片

PHP操作XML_第10张图片

Position()是节点的位置,节点的位置是从1开始的。

PHP操作XML_第11张图片

simpleXML

PHP5以上提供了一个simpleXML对象来操作XML.把XML的节点转换成对象和数组去操作

PHP操作XML_第12张图片

 

PHP操作XML_第13张图片

PHP操作XML_第14张图片

unset只销毁当前变量(栈区地址),不会销毁对应的对象(堆中地址)。

使用php函数处理xml

simplexml_load_string() 函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象。










Tove

Jani

Reminder

Don't forget me this weekend!



XML;


$xml=simplexml_load_string($note);

print_r($xml);

?>







结果:

SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )

simplexml_load_file() 函数把 XML 文档载入对象中。

simplexml_load_file(file,class,options,ns,is_prefix)

参数 描述

file 必需。规定要使用的 XML 文档。

class 可选。规定新对象的 class。

options 可选。规定附加的 Libxml 参数。

ns 可选。

is_prefix 可选。

返回值

返回类 SimpleXMLElement 的一个对象,该对象的属性包含 XML 文档中的数据。如果失败,则返回 false。

xml文件





George

John

Reminder

Don't forget the meeting!




php文件




结果:

object(SimpleXMLElement)#1 (4)

{

["to"]=> string(4) "George"

["from"]=> string(4) "John"

["heading"]=> string(8) "Reminder"

["body"]=> string(29) "Don't forget the meeting!"

}

 

 

你可能感兴趣的:(XML,php)