zoukankan      html  css  js  c++  java
  • PHP 自学之路-----XML编程(Dom技术)

    上一节,讲了Xml文件基本语法及元素,实体及Dtd约束技术,下面就正式进入PHP的Xml编程

    使用PHP技术对Xml文件进行操作
    常用的有以下三种技术:
    1、PHP dom
    2、PHP结合XPath操作Xml
    3、Simplexml技术
    首先来说明Dom
    Dom(Document object model)文档-对象-模型,核心思想是把一个Xml文件,看成一个对象模型,然后通过对象的方式来操作Xml文件。

    1、创建一个Xml文件

        在学习过程中发现,自己直接编写的Xml文件,在调用Xml函数的时候总是不能被正确的识别,所以先用PHP来创建一个Xml文件,再进行操作,直接看代码

    <?php
        //实例化一个DomDocument对象
        $dom = new DomDocument('1.0', 'UTF-8');
        //如果文件不存在就创建一个
        if (!file_exists("xml_test.xml")){
        	header("Content-Type: text/plain");
        	$root = $dom->createElement("class");
        	$dom->appendChild($root);
        	$dom->save("xml_test.xml");
        } else{
        	$dom->load("xml_test.xml");  
        }
        print $dom->saveXML();
    ?>

    在网页上打开,执行会创建个xml_test.xml文件(这里有个问题是,根目录的名字不能使用汉字,具体没有明白如何去设置?知道的朋友给指点下,非常感谢!)

    <?xml version="1.0" encoding="UTF-8"?>
    <class/>

    2、增加元素

    <?php 
        //addElementsxml.php 
        $dom = new DOMDocument("1.0", "UTF-8");
        
        $dom->load("xml_test.xml");
        
        $root_class = $dom->getElementsByTagName("class");
        $i = 0;
       // for($i = 0;$i < 4; $i++){
        	$root_class_node = $root_class->item($i);
        	$stu_node=$dom->createElement("student");
        	$stu_node->setAttribute("xingbie", "man");
        	$stu_node_name=$dom->createElement("name","name".$i);
        	//设置属性
        	$stu_node_name->setAttribute("hel", "23");
        	$stu_node_age=$dom->createElement("age","21");
        	$stu_node_introduce=$dom->createElement("introduce","1111");
        	$stu_node->appendChild($stu_node_name);
        	$stu_node->appendChild($stu_node_age);
        	$stu_node->appendChild($stu_node_introduce);
        	$root_class_node->appendChild($stu_node);
       // }
        $dom->save("xml_test.xml");
        print $dom->saveXML();
    
    ?>


    3、遍历元素

    <?php
        //getNode.php
        //解析一个文件的步骤
        //1创建一个对象,表示文档
        $dom = new DOMDocument("1.0", "UTF-8");
        //2制定加载那个Xml,解析那个文件
        $dom->load("xml_test.xml");
        //3 获取你关新节点
        $stu_nodes = $dom->getElementsByTagName("student");
        
        for ($i=0;$i<$stu_nodes->length;$i++){
        	//取出每个学生
        	$stu_node = $stu_nodes->item($i);
        	for($i=0;$i<$stu_node->childNodes->length;$i++){
        	    echo $stu_node->childNodes->item($i)->nodeValue;
        	    echo "<br/>";
        	}
        }
    ?>

    4、删除元素

    <?php
        //解析一个文件的步骤
        //1创建一个对象,表示文档
        $dom = new DOMDocument("1.0", "UTF-8");
        //2制定加载那个Xml,解析那个文件
        $dom->load("xml_test.xml");
        //3 获取你关新节点
        $stu_nodes = $dom->getElementsByTagName("student");
        $stu_node=$stu_nodes->item($stu_nodes->length -1);
        $stu_node->parentNode->removeChild($stu_node);
        
        $dom->save("xml_test.xml");
     ?>

    5、修改元素属性

    <?php
        //1创建一个对象,表示文档
        $dom = new DOMDocument("1.0", "UTF-8");
        //2制定加载那个Xml,解析那个文件
        $dom->load("xml_test.xml");
        
        //找到这个学生
        $stus=$dom->getElementsByTagName("age")->item(0);
        $stus->nodeValue=100;
        
        $dom->save("xml_test.xml");
        ?>

    上面介绍了基本DOM操作,增删改查,下一节将有具体的实例来操作


    参考资料:


  • 相关阅读:
    libtorch初体验
    libtorch 常用api函数示例(史上最全、最详细)
    VS2015,vs2019用正则表达式搜索删除空白行的方法
    CMake引入opencv3.1.0编译时includes non-existent path问题解决
    opencv编译的时候的注意事项------如果出现 target glog::glog 找不到的情况,可能是由于glog的版本过低导致的。通常与ceres有关
    ID3D11Multithread 未声明的标识符 opencv 411 opencv400 3411 opencv440 vs2015 都出现这个错误 但是opencv311没有出现这个问题
    错误 LNK2001 无法解析的外部符号 "__declspec(dllimport) bool cv::__termination" (__imp_?__termination@cv@@3_NA) opencv_cudev
    raw.githubusercontent.com无法连接
    编译opencv3.1.0时出现错误:error: ‘NppiGraphcutState’ has not been declared
    Ubuntu16.04 安装g++6
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3281249.html
Copyright © 2011-2022 走看看