php操作xml

使用php技术对xml文件进行操作常用的三种技术
1.php dom www.w3school.com.cn/xmldom/
2.php 结合xpath 操作xml www.w3school.com.cn/xpath/xpath_syntax.asp
3.SimpleXml www.w3school.com.cn/php/php_ref_simplexml.asp

dom操作

<?php 
header("Content-Type: text/html; charset=utf-8");// 创建一个domdocument对象 表示文档
$xmldoc=new DOMDocument();
$xmldoc->load("classes.xml");// 指定加载那个xml 解析那个文件
$stus=$xmldoc->getElementsByTagName("学生");// 查询节点 把所有的学生获取(domnodelist)
for($i=0; $i<$stus->length;$i++) {// 遍历
        $stu=$stus->item($i); //取出学生
        echo getNodeVal($stu,"名字")."--".getNodeVal($stu,"年龄").getNodeVal($stu,"介绍")."<br/>"; //各个信息
    }
    function getNodeVal(&$MyNode,$tagName){        
        return $MyNode->getElementsByTagName($tagName)->item(0)->nodeValue;
}

// 添加节点
// $root=$xmldoc->getElementsByTagName("班级")->item(0);
// $stu_node=$xmldoc->createElement("学生");
// $stu_node->setAttribute("性别","男");
// $stu_node_name=$xmldoc->createElement("名字");
// $stu_node_name->nodeValue="小明";
//$stu_node->appendChild($stu_node_name);
//$stu_node_age=$xmldoc->createElement("年龄");
//$stu_node_age->nodeValue="12"; // $stu_node->appendChild($stu_node_age); // $stu_node_intro=$xmldoc->createElement("介绍"); // $stu_node_intro->nodeValue="不爱学习"; // $stu_node->appendChild($stu_node_intro); // $root->appendChild($stu_node); // $xmldoc->save("classes.xml"); // echo "添加成功"; // 删除节点 // $root=$xmldoc->getElementsByTagName("班级")->item(0); // $stus=$xmldoc->getElementsByTagName("学生"); // $stu1=$stus->item(2); // $stu1->parentNode->removeChild($stu1); // $xmldoc->save("classes.xml"); // echo "删除成功"; // 修改节点 // $stus=$xmldoc->getElementsByTagName("学生"); // $stu1=$stus->item(0); // $stu1_age=$stu1->getElementsByTagName("年龄")->item(0); // $stu1_age->nodeValue+=10; // $xmldoc->save("classes.xml"); // echo "更新ok";

calsses.xml

<?xml version="1.0" encoding="utf-8"?>
<班级>
    <学生>
        <名字>小马哥</名字>
        <年龄>63</年龄>
        <介绍>学习刻苦</介绍>
    </学生>
    <学生>
        <名字>林青霞</名字>
         <年龄>32</年龄>
        <介绍>是一个好学生</介绍>
    </学生>
    
    <学生>
        <名字>李彦宏</名字>
         <年龄>42</年龄>
        <介绍>百度</介绍>
    </学生>
    <学生>
        <名字>雷军</名字>
         <年龄>42</年龄>
        <介绍>小米</介绍>
    </学生>    
</班级>

 simplexml操作(不能操作中文节点?)

<?php 
header("Content-Type: text/html; charset=utf-8");
$lib=simplexml_load_file("classes.xml"); //装载一个xml文件
//var_dump($lib);
$books=$lib->book;//取出书,$books就是一个数组
//$book=$books[0];
//取出书名
//echo $book->title."||".$book->author."||".$book->code;
for($i=0;$i<count($books);$i++){
    $book=$books[$i];
    //取出属性的值
    echo '出版:'.$book['house']."<br/>";
    echo '书名:'.$book->title."<br/>";
    echo '价格:'.$book->price."<br/>";
    echo '作者:'.$book->author."<br/>";
    echo '编码:'.$book->code."<br/>";
}
//SimpleXML也可以和xpath结合,功能强大
echo "<br/>*****simplexml 和 xpath结合****";
$titles=$lib->xpath("//title");
foreach($titles as $val){
    echo  "<br/>".$val;
}

classes.xml

<?xml version="1.0" encoding="utf-8"?>
<books>
<book house="清华出版社">
<code>001</code>
<price>9.9</price>
<author>金庸</author>
<title>天龙八部</title>
</book>
<book house="北大出版社">
<code>002</code>
<price>10</price>
<author>小明</author>
<title>笑傲江湖</title>
</book>
</books>
原文地址:https://www.cnblogs.com/aten/p/8590376.html