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. MyBatis+Spring 事务管理

                 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://kinglixing.blog.51cto.com/34 ...

  2. ABAP ALV DEMO示例源码

    关于ALV表格颜色,感觉这种需求在项目中用到的时候不是很多,但是前一段时间面试的时候,面试官问了我关于ALV单元格颜色的问题. 以前了解过一点,回答的不是很好,后来百度了一下,大概了解了一些,今天工作 ...

  3. Hive sql 语法解读

    一. 创建表 在官方的wiki里,example是这种: Sql代码   CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name d ...

  4. Java通过代理server上网

    完整代码 package com.proj.net; //导入编码的jar文件 import it.sauronsoftware.base64.Base64; import java.io.Buffe ...

  5. eclipse 配置Maven问题解决办法:新建maven工程时报错:Could not resolve archetype org.apache.maven.archetypes .

    此文乃本作者配置maven,被其折磨n天,究极解决方案,好文要顶啊.欢迎致电: zhe-jiang.he@hp.com 首先各maven.archetypes下载地址: http://mirrors. ...

  6. mybatis0202 一对一查询 resultType实现

    一对一查询 查询订单信息和用户信息 创建po类 基础的单表的 po(数据库类)类:Items.java, Orderdetail.java, Orders.java, User.java 一对一查询映 ...

  7. Btrace

    http://www.iteye.com/topic/1005918 背景 周五下班回家,在公司班车上觉得无聊,看了下btrace的源码(自己反编译). 一些关于btrace的基本内容,可以看下我早起 ...

  8. PureMVC(JS版)源码解析(一):观察者模式解析

          假设一种情景,在程序开发中,我们需要在某些数据变化时,其他的类做出相应,例如在游戏中,升级一件装备,会触发玩家金币数量改变,背包数据改变和冷却队列数据改变等等.我们不可能设置setInte ...

  9. eclipse快速查找一个变量、方法或者类被引用的地方

    最近不停debug,拿到一个变量之后总是要先概览一下才好下手,之前一直用Ctrl+F来做,太麻烦.今天查了下eclipse使用,发现有快捷键,使用方法: 先双击要查看的变量.方法或者类,使之被选中,然 ...

  10. STDMETHOD_,STDMETHOD,__declspec(novtable)和__declspec(selectany)

    1.STDMETHOD_(ULONG, AddRef)() PURE; STDMETHOD_:定义一个返回指定类型的虚方法, STDMETHOD:定义一个返回HRESULT类型的虚方法, PURE : ...