解析XML的案例

发布时间:2020-12-02 10:22:42 作者:小新
来源:亿速云 阅读:121

这篇文章将为大家详细讲解有关解析XML的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一.解析XML

创建demo.xml文件:

<?xml version="1.0" encoding="UTF-8"?> <bookstore>
    <book book_id="1">
      <title>php</title> 
      <author>php入门到放弃</author> 
    </book>
    <book book_id="2">
      <title>java</title> 
      <author>java入门到放弃</author> 
    </book>
    <book book_id="3">
      <title>C</title> 
      <author>C入门到放弃</author> 
    </book></bookstore>

使用PHP解析demo.xml中的内容,以获取到php这个文本节点为例:

<?php
    /*思路:1.先载入xml文档 
    2.获取节点列表对象 
    3.获取子节点对象 
    4.获取子节点列表对象 
    5.获取文本对象 如果层级比较深就是循环2-4步,先拿列表对象,再拿子节点对象...*/
    $dom = new DOMDocument('1.0','UTF-8');
    //print_r($dom); //DOMDocument Object
    $dom->load('demo.xml'); //载入要解析的xml文档
    $titleList = $dom->getElementsByTagName('title'); ////DOMNodeList Object ( [length] => 3 ) 获取节点列表对象
    $title = $titleList->item(0); //DOMElement Object 获取子节点对象
    $title = $title->childNodes; //DOMNodeList Object ( [length] => 1 )获取子节点列表对象
    $title = $title->item(0); //DOMText Object 获取到文本对象
    $text = $title->wholeText; //获取到文本内容
    echo $text; //php
    echo '<br>';
    //也可以直接写成连贯操作:  
    $text = $dom->getElementsByTagName('title')->item(0)->childNodes->item(0)->wholeText;
    echo $text; //php
    echo '<br>';
    //第二种方法:
    $text = $dom->getElementsByTagName('title')->item(0)->nodeValue; //获取到文本内容
    echo $text; //php

除了解析之外,还可以对xml节点进行删除和替换操作:

    $dom = new DOMDocument('1.0','UTF-8');
    $dom->load('demo.xml'); //载入要解析的xml文档
    /**
     *xml删除节点
     * */
    $php = $dom->getElementsByTagName('book')->item(0); //获取文本节点
    $php->parentNode->removeChild($php); //获取文本节点的父节点,然后站在父节点的立场删除子文本节点
    /**
     * xml替换节点
     * */
    $java = $dom->getElementsByTagName('title')->item(0); //获取要替换的文本节点
    $newnode = $dom->createTextNode('python'); //创建新的文本节点
    $java->replaceChild($newnode,$java->firstChild); //用新节点替换旧文本节点内容
    header("content-type:text/xml");
    echo $dom->saveXML(); //直接输出xml文本     

二.创建XML

使用PHP创建一个如下的XML文件:

<?xml version="1.0" encoding="UTF-8"?> <bookstore>
 <book book_id="1">
     <title>php</title>
     <author><![CDATA[PHP是世界上最好的编程语言.emmm...]]></author>
 </book></bookstore>

PHP代码:

<?php
    $dom = new DOMDocument('1.0','UTF-8');
    $text =  $dom->createTextNode('php'); //创建文本节点
    $title = $dom->createElement('title'); //创建普通节点
    $title->appendChild($text); //将文本节点作为子节点添加到普通节点内
    $cdata = $dom->createCDATASection('PHP是世界上最好的编程语言.emmm...'); //创建CDATA节点
    $author = $dom->createElement('author'); //创建普通节点
    $author->appendChild($cdata); //将CDATA节点作为子节点添加到普通节点内
    $book = $dom->createElement('book'); //创建普通节点
    //将上面创建的两个普通节点作为子节点添加到普通节点内
    $book->appendChild($title);
    $book->appendChild($author);
    $book_id = $dom->createAttribute('book_id'); //创建属性名
    $book_id->value = '1'; //创建属性值
    $book->appendChild($book_id); //将属性加到普通节点内
    $bookstore = $dom->createElement('bookstore'); //创建普通节点
    $bookstore->appendChild($book); //将普通节点作为子节点添加到普通节点内
    $dom->appendChild($bookstore); //将普通节点添加到文档内
    // header("content-type:text/xml");
    // echo $dom->saveXML(); //直接输出xml文本
    echo $dom->save('demo.xml'); //生成xml文件

在浏览器输出如下图:

解析XML的案例

关于解析XML的案例就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. SQL解析XML
  2. 解析XML

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

xml

上一篇:企业应用钉钉免钉流程的示例

下一篇:p5.js和JavaScript的区别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》