php操作xml

要操作的数据


代码如下:

<?xml version="1.0"?>
<books>
    <book name="JavaScript: The Defiitive Guide" publisher="O'Reilly Media, Inc.">
        <author>David Flanagan</author>
    </book>
    <book name="PHP anf MySQL Web Development" publisher="Perason Education">
        <author>Luke Welling</author>
        <author>Laura Thomson</author>
    </book>
    <book name="HTTP: The Defiitive Guide" publisher="O'Reilly Media, Inc.">
        <author>David Courley</author>
        <author>Brian Totty</author>
    </book>
</books>

XML几个基本概念
1、 节点:节点也就是很多程序语言中处理XML时的Node,节点是一个比较宽泛的概念,在XML中元素,属性,名字空间,注释,文本内容,处理指令,还有整个文档都属于节点,也就是说XML文档中每个独立的一小部分都是节点,<books></books>是,<?xml version=”1.0”?>也是,name=”XXXX”也是,<author></author>标签是,甚至作者的名字David Flanagan都是一个文本节点。
2、元素:很多程序语言都有对XML处理,节点是一个很宽泛的概念,因为要统一API,对节点不会有过多方法,而元素也就是Element是节点的一个子集,简单讲就是<xxx></xxx>这样的标签才算,一般会有很多针对元素的操作方法。
3、属性:这个比较好理解,在<>里面的类似XX=”OO”等东西都是属性节点
4、转义字符:和HTML等类似,xml也有语言占用的符号,想使用的这些特殊字符的时候需要转义

DOMDocument对象
我使用的是DOMDocument对象来操作xml,感觉用起来比simpleXml科学一些,当然第一天使用php,纯属个人感觉。DOMDocument有几个常用的属性和方法。

加载xml


代码如下:

$path=$_SERVER["DOCUMENT_ROOT"].'/books.xml';
    $books=new DOMDocument();
    $books->load($path);

读取/遍历节点与属性


代码如下:

$bookElements=$books->getElementsByTagName('book');

foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            echo strtoupper($attr->nodeName).' —— '.$attr->nodeValue.'<br/>';
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName('author') as $author) {
            echo $author->nodeValue.' ';
        }
        echo '<br/><br/>';
    }

当然对于很多属性,只想读一个,可以通过item(index)方法按索引读取


代码如下:

echo $book->attributes->item(1)->nodeValue;

还可以通过强大的xpath查询


代码如下:

还可以通过强大的xpath查询

修改属性/节点


代码如下:

foreach($bookElements as $book){
        foreach ($book->attributes as $attr) {
            #$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
            $attr->nodeValue=strtoupper($attr->nodeValue);
        }
        echo "AUTHOR: ";
        foreach ($book->getElementsByTagName('author') as $author) {
            $author->nodeValue=strtoupper($author->nodeValue);
        }

}
    $books->save($path);

对属性修改可以直接访问其nodeValue改动,也可以使用setAttribute方法,改动完了别忘了使用save保存。


代码如下:

$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
$attr->nodeValue=strtoupper($attr->nodeValue);

添加元素/属性


代码如下:

$newBook=$books->createElement('book'); #创建新元素
    $newBook->setAttribute('name','PHP Objects, Patterns, and Practice');#创建新属性,方法一

$publisher=$books->createAttribute('publisher');#创建新属性,方法二
    $publisher->nodeValue='Apress L.P';
    $newBook->appendChild($publisher); #把属性添加到元素上

$author=$books->createElement('author');#创建子元素
    $author->nodeValue='Matt Zandstra';
    $newBook->appendChild($author);#把子元素添加到父元素上

$books->documentElement->appendChild($newBook);#添加整个节点
    $books->save($path);

删除属性/节点


代码如下:

$first=$bookElements->item(0);
    $first->removeAttribute('publisher');

$second=$bookElements->item(1);
    $second->parentNode->removeChild($second);

$books->save($path);

初学php文章肯定有很多谬误,希望大家批评指正,共同进步。

(0)

相关推荐

  • 基于PHP对XML的操作详解

    <?php $xml = simplexml_load_file('example.xml');              //创建SimpleXML对象       var_dump($xml);                                                             //输出XML   ?> <?php      $xml = simplexml_load_file('example.xml');          //读取XML文件 

  • php操作xml入门之cdata区段

    本文实例讲述了php操作xml入门之cdata区段.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <class>  <student id="No<001" haha="美女">   <name>小乔</name>

  • php中DOMElement操作xml文档实例演示

    复制代码 代码如下: <?php //Store your html into $html variable. $html="<html> <head> <title>Rakesh Verma</title> </head> <body> <a href='http://example.com'>Example</a> <a href='http://google.com'>Goog

  • 解析php DOMElement 操作xml 文档的实现代码

    复制代码 代码如下: /*<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- css的样式定义,不加点.如:name{color:red;} --><?xml-stylesheet type="text/css" href="css.css"?><!-- 引入dtd文档定义文件 (根元素:班级)&l

  • 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)

    而昨晚在使用 XPATH 的时候, 遇到一个问题, 改了一个晚上才搞定, 差点没吐血. 果然基础知识要掌握扎实啊!! 假设有以下一份 XML 文档: 我们要获取所有歌曲的标题, 一般是使用以下的 XPATH 表达式: 复制代码 代码如下: /playlist/trackList/track/title 但是匹配的结果会让你非常失望, 你会发现什么也得不到. 于是我在这个问题上卡了好几个小时, 最终万能的 Google 告诉了我答案. 在第二行 playlist 那个节点, 有一个 XMLNS 属

  • php操作XML、读取数据和写入数据的实现代码

    xml文件 <?xml version="1.0" encoding="utf-8"?> <vip> <id>23</id> <username>开心的路飞</username> <sex>男</sex> <face>face/43.jpg</face> <email>123@qq.com</email> <qq>

  • php操作xml入门之xml基本介绍及xml标签元素

    本文实例讲述了php操作xml入门之xml基本介绍及xml标签元素.分享给大家供大家参考.具体分析如下: 以xml实例来讲解: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" standalone="no" ?> <class>  <student>   <name>小乔</name>   <sex>女</sex>

  • php操作xml入门之xml标签的属性分析

    本文实例讲述了php操作xml入门之xml标签的属性.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <class>  <student id="No001" haha="美女">   <name>小乔</name>   &

  • ASP XMLDom在服务器端操作XML文件的主要方法和实现

    对于小数据量,xml文件在检索更新上于ACCESS有很多优势. 我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定. 下面说一下创建,查询,修改等对xml操作的主要方法 程序代码 NO.1--建立一个XML数据库data.xml 复制代码 代码如下: <?xml version="1.0"?> <records> <record>

  • php操作xml

    要操作的数据 复制代码 代码如下: <?xml version="1.0"?><books>    <book name="JavaScript: The Defiitive Guide" publisher="O'Reilly Media, Inc.">        <author>David Flanagan</author>    </book>    <boo

  • JavaScript操作XML 使用百度RSS作为新闻源示例

    js操作xml源,作为页面的动态新闻 参考JS源码如下(存为rss.js文件): 复制代码 代码如下: var main = document.getElementById("content").getElementsByTagName("DIV"); /* * 当前目录下面有一个名为xml的子文件夹,下面引用的源保存在目录下. * 下面每一行的冒号前面是文件名,后面是xml源地址(可以从源址下载得到xml文件,下载后保存为对应文件名) * 可以在下面的地址上单击右

  • JAVA操作XML实例分析

    本文实例讲述了JAVA操作XML的方法.分享给大家供大家参考.具体如下: java代码如下: 复制代码 代码如下: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.xml.

  • dom4j操作xml的demo(分享)

    废话不多说,直接上代码 package com.cn.shop.util; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.D

  • Flash & Ajax 操作 XML 实例:无刷新分页

    其实标题只是一个噱头罢了,只是想谈一下,Javascript 与 Actionscript 是如何操作XML的. 希望能帮助一些只用 Javascript  或 只懂 Actionscript 的朋友,了解两者的相同与不同之处. Flash 与 后台连接有许多种,Actionscript 调用 XML() 算是比较简单的一种了, 而Javascript 调用 xmlHttp ,便形成了现在很流行的Ajax了. 现在就用一个网上常出现的分页效果来对 Flash 和 Ajax 做个入门学习.效果预览

  • js操作XML文件的实现方法兼容IE与FireFox

    最近项目中用到了xml,需求是用户安装产品时先把一系列的数据保存到xml文件中,当执行到最后一步时才写入数据库,这样最大限度的减少了数据库的访问,于是不得不纠结在各浏览器的兼容性的问题(悲哀啊....) 进入正文 下面是一个xml文件 (createInstal.xml) <?xml version="1.0" encoding="utf-8"?> <info> <Item> <id descrption="级别&

  • php操作xml并将其插入数据库的实现方法

    如下所示: <?php header('content-type:text/html;charset=utf-8'); mysql_connect('localhost', 'root', ''); mysql_select_db('test'); mysql_query('SET names utf8'); $xml_array=simplexml_load_file('suggest.xml'); //将XML中的数据,读取到数组对象中 foreach($xml_array as $tmp)

随机推荐