xml操作解析(PHP)

PHP简单读取XML

在这里插入图片描述

DOM

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

节点的分类

元素节点
属性节点
值节点
注释节点
根节点(document才是根节点)

生成XML文档

在这里插入图片描述

读取XMl文档

在这里插入图片描述
递归遍历XML

nodeType的值
在这里插入图片描述
值节点的名称是"#text"

根节点的名称是"#document"

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

综合例题:对图书的操作

1、管理界面books_admin.php,

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

在这里插入图片描述
通过firstchild和lastchild访问子节点
在这里插入图片描述
2、添加界面books_add.php

3、修改界面books_modify.php
在这里插入图片描述
4、删除
在这里插入图片描述

Xpath

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

XPath的作用:用于快速定位节点。
在这里插入图片描述
在这里插入图片描述
Position()是节点的位置,节点的位置是从1开始的。
在这里插入图片描述

simpleXML

PHP5以上提供了一个simpleXML对象来操作XML.把XML的节点转换成对象和数组去操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
unset只销毁当前变量(栈区地址),不会销毁对应的对象(堆中地址)。

使用php函数处理xml

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

<!DOCTYPE html>
 <html>
 <body>
 <?php
 $note=<<<XML
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML;
 $xml=simplexml_load_string($note);
 print_r($xml);
 ?>
 
 </body>
 </html>

结果:

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文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
php文件
<?php
if (file_exists('test.xml'))
{
$xml = simplexml_load_file('test.xml');
var_dump($xml);
}
else
{
 
exit('Error.');
} 
?>

结果:
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)