PHP操作XML

帅比萌擦擦* 提交于 2020-02-02 09:13:38

1,首先来创建一个xml文档(xiawei.xml):

<?xml version="1.0" encoding="UTF-8"?>
<bookshop>
    <books>
        <bookType>
            <name>计算机方面的书</name>
            <book>
                <name>JAVA语言程序设计</name>
                <price>100</price>
                <author>夏威</author>
            </book>
            <book>
                <name>C语言程序设计</name>
                <price>80</price>
                <author>谭浩强</author>
            </book>
        </bookType>
        <bookType>
            <name>英语方面的书</name>
            <book>
                <name>新概念英语</name>
                <price>80</price>
                <author>亚历山大</author>
            </book>
        </bookType>
    </books>
</bookshop>

 

2.创建一个SimpleXML对象,如果要从一个字符串中读取XML数据并创建对象,用simplexml_load_string (string data)方法。但是在这里我们直接从xiawei.xml这个xml文件中获取xml信息,我们用simplexml_load_file(String filename)方法,创建一个php文件test.php:

<?php
    header("Content-type:text/html;charset=utf-8");
    $xml = simplexml_load_file("xiawei.xml");//创建一个SimpleXML对象
    echo $xml->asXML();//将该对象以标准的xml形式输出
?>

 

3.

  //遍历所有bookType下面的name属性
    foreach ($xml->books->bookType as $bt){
        echo $bt->name."<br/>";
    }

4.//层层遍历,以遍历所有书的名字为例子
    foreach ($xml->books as $books){
        foreach ($books->bookType as $bt){
            foreach ($bt->book as $book){
                echo $book->name."<br/>";
            }
            echo "<br/>";
        }
    }

  运行结果:

  

5.基于 XML数据路径的查询:

$result = $xml->xpath("books/bookType/book/author");
    var_dump($result);

结果:

6,动态创建一个xml文档:

<?php
//创建一个新的 DOM文档
$dom = new DomDocument();
//在根节点创建 departs标签
$departs = $dom->createElement('departs');
$dom->appendChild($departs);
//在 departs标签下创建 depart子标签
$depart = $dom->createElement('depart');
$departs->appendChild($depart);
//在 depart标签下创建 employees子标签
$employees = $dom->createElement('employees');
$depart->appendChild($employees);
//在 employees标签下创建 employee子标签
$employee = $dom->createElement('employee');
$employees->appendChild($employee);
//在 employee标签下创建 serial_no子标签
$serial_no = $dom->createElement('serial_no');
$employee->appendChild($serial_no);
//为 serial_no标签添加值节点 100001
$serial_no_value = $dom->createTextNode('100001');
$serial_no->appendChild($serial_no_value);
//输出 XML数据
echo $dom->saveXML();
?>

结果输出:

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!