XML操作

XML主要是做数据存储和WEB服务的,所以我们难免要操作它,这里只介绍PHP的simpleXML方式。

我们要操作的XML:

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

<!DOCTYPE books[
    <!ELEMENT books (book*)>
    <!ELEMENT book (name,author)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT author (#PCDATA)>
    <!ATTLIST book id ID #REQUIRED
                    category CDATA #REQUIRED>
    <!ATTLIST name lang (en|zh) 'zh'>
]>
<books>
    <book id='a3' category='后台技术'>
        <name lang='en'>Learn PHP</name>
        <author>Alex</author>
    </book>

    <book id='a4' category='前台技术'>
        <name lang='en'>Learn HTML</name>
        <author>Alex</author>
    </book>  

    <book id='a5' category='前台技术'>
        <name lang='en'>Learn CSS</name>
        <author>Alex</author>
    </book>
</books>

SimpleXMLElement

我们要操作XML需要得到一个SimpleXMLElement对象,方法有两种:

$simple_element = simplexml_load_file('test.xml');
$simple_element = new SimpleXMLElement('test.xml');

添加

$simple_element = simplexml_load_file('test.xml');
// 添加节点
$new_book = $simple_element->addChild('book');
$new_name = $new_book->addChild('name','learn_JAVAScript');
$new_book->addChild('author','Alex');
// 添加属性
$new_book->addAttribute('id','a6');
$new_book->addAttribute('category','前端技术');
// 保存
$simple_element->saveXML('test.xml');

查询

$simple_element = simplexml_load_file('test.xml');
// 编写HTML
$table = '<table width="600" border="1">';
$table .= '<tr><th>title</th><th>author</th></tr>';
foreach ($simple_element->book as $book) {
    $table .= "<tr>";
    $table .= "<td>{$book->name}</td>";
    $table .= "<td>{$book->author}</td>";
    $table .= '</tr>';
}

echo $table;

修改

$simple_element = simplexml_load_file('test.xml');
$books = $simple_element->book;
$books[1]->name = 'PHP经典实例';
$simple_element->saveXML('test.xml');
$simple_element = simplexml_load_file('test.xml');
// 获取到所有的book
$books = $simple_element->book;
// 获取book1的所有属性
$attributes = $books[1]->attributes();
// 修改属性
$attributes['category'] = '工具';
$simple_element->saveXML('test.xml');

删除

$simple_element = simplexml_load_file('test.xml');
// 获取到所有的book
$books = $simple_element->book;
// 删除用unset即可
unset($books[0]);
$simple_element->saveXML('test.xml');

我的PHP之旅--XML操作的更多相关文章

  1. LINQ系列:LINQ to XML操作

    LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...

  2. T-Sql(五)xml操作

    t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...

  3. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  4. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  5. 简单的XML操作类

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  6. Entity Framework 实体框架的形成之旅--界面操作的几个典型的处理(8)

    在上篇随笔<Entity Framework 实体框架的形成之旅--数据传输模型DTO和实体模型Entity的分离与联合>里面,介绍了在Entity Framework 实体框架里面引入了 ...

  7. .net学习笔记---xml操作及读写

    一.XML文件操作中与.Net中对应的类 微软的.NET框架在System.xml命名空间提供了一系列的类用于Dom的实现. 以下给出XML文档的组成部分对应.NET中的类: XML文档组成部分 对应 ...

  8. C#常用操作类库三(XML操作类)

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  9. php xml 操作。

    参考 文章:http://www.cnblogs.com/zcy_soft/archive/2011/01/26/1945482.html DOMDocument相关的内容. 属性: Attribut ...

随机推荐

  1. js去除空格

    function trim(str){ return str.replace(/(^\s*) | ( \s*$ )/g,"" ); }

  2. 英文Ubantu系统安装中文输入法

    以前都是安装的中文Ubantu,但是有时候用命令行的时候中文识别不好,会出现错误,所以这次安装了英文版,但是安装后发现输入法不好用,于是就要自己安装输入法. 安装环境为Ubantu13.04 1.卸载 ...

  3. python实战--Http代理服务器

    打算好好深入研究下pytho的socket编程,那天看了这篇博文,http://www.apprk.com/archives/146,于是打算学习下,仿写了一下,发现写好还真不容易,中途出现很多问题, ...

  4. [翻译] GVUserDefaults

    GVUserDefaults Tired of writing all that code to get and set defaults in NSUserDefaults? Want to hav ...

  5. 使用GridView自带分页的代码

    关于GridView分页页码的讨论 在GridView中实现分页的效果方法非常easy,仅仅须要在"GridView任务"对话框中进行设置就能够了.在"GridView任 ...

  6. hdu4488 Faulhaber’s Triangle(模拟题)

    Faulhaber’s Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. NSURLSessionDownloadTask 断点下载

    #import "ViewController.h" #import "ASIHTTPRequest.h" #import <AFNetworking/A ...

  8. LabView 快捷键

    对象调整和移动Shift-click 选择多个对象,在现有选择的基础上添加对象(方向键) 以一个像素为单位移动所选对象Shift- 以几个像素为单位移动所选对象Shift-click (拖动对象) 在 ...

  9. 深度剖析:CDN内容分发网络技术原理--转载

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  10. android开发必备日志打印工具类

    今天给大家献上一款好用的日志打印工具.大家在平时的开发中用的最多的可能就是Log.i("",""),Log.e("","" ...