PHP入门(17)PHP与XML

  1. XML是什么?

XML(eXtensible Markup Languge)即扩展性标记语言,类似于HTML,允许用户自定义自己的标签。

2.XML可以干什么?

XML用于存储数据,即将一种格式的数据存储到XML文档中,然后对这个XML文档进行解析,最后以另一种方式输出数据。

XML的用途一般有:

结构化数据,如邮件地址薄,系统配置文件

标准交换数据,用于多个平台或者应用系统之间交换数据

创建新的标记语言,用于实现更多的功能,比如RSS(简易信息聚合)

3.XML的语法格式

下面是一个简单的xml文件,注意文件保存的时候编码格式应该选择utf-8

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/css"?>
<计算机图书 name="book">
    <PHP type="computer_book">
         <bookname>开发典型模块大全</bookname>
         <price unit="dollar each">79.00</price>
         <publishdate>2008-09-10</publishdate>
    </PHP>
    <PHP type="computer_book">
        <bookname>Java</bookname>
        <price unit="dollar each">79.00</price>
        <publishdate>2008-09-10</publishdate>
    </PHP>
    <PHP type="computer_book">
        <bookname>Java</bookname>
        <price unit="dollar each">79.00</price>
        <publishdate>2008-09-10</publishdate>
    </PHP>
</计算机图书>

第一行为XML声明,而且必须出现在第一行,而且第一行不能是空行,说明XML的版本,编码等信息。

XML的注释 <!-- -->

XML的元素 <标签>数据内容</标签>

如果标签内容含有>< &等特殊字符的话,有两种解决方式

第一种使用实体参考(

<   &lt;

>   $gt;

‘   &apos;

"   &quot;

&   &amp;  注意,千万不要忘了末尾的分号

第二种 适用于特殊字符特别多的情况

<![CDATA[

特殊字符 这里可以正常输出< > ‘ " 等特殊字符

]]>

4.如何解析XML文件?

可以使用PHP5的SimpleXML函数

<?php
header("Content-Type:text/html;charset=UTF-8");
$xml = simplexml_load_file("book.xml");/*通过载入xml文件创建SimpleXML对象 即根节点对象*/
//print_r($xml);
foreach($xml->children() as $layer_one){
    print_r($layer_one);/* $layer_one其实是一个数组,数组元素是该层的节点对象 这里是三个PHP节点 */
    echo "<br>";
    foreach($layer_one->children() as $layer_two){
        print_r($layer_two);
        echo "<br>";
    }
}

=============================================

遍历节点的所有属性

header("Content-Type:text/html;charset=UTF-8");
$xml = simplexml_load_file("book.xml");
//print_r($xml);
foreach($xml->children() as $layer_one){
    foreach($layer_one->attributes() as $name=>$value){
        echo "$name ======> $value";
        echo "<br>";
        foreach($layer_one->children() as $layer_two){
            foreach($layer_two->attributes() as $name1=>$value1){
             echo "$name1 =======>$value1";
            }
        }
    }
}

运行结果

==========================================

访问特定节点的元素和属性

<?php
header("Content-Type:text/html;charset=UTF-8");
$xml = simplexml_load_file("book.xml");
echo $xml["name"];/*访问根节点属性name的值*/
$layer_one = $xml->children();
echo $layer_one[0]->bookname."<br>";
echo $layer_one[0]->price."<br>";         /*得到子节点price的值*/
echo $layer_one[0]->price["unit"]."<br>";/*得到子节点price unit属性的值*/
echo $layer_one[0]->publishdate."<br>";
echo count($layer_one); /* 3 */

========================================================

修改XML文件的内容

<?php
header("Content-Type:text/html;charset=UTF-8");
$xml = simplexml_load_file("book.xml");
$layer_one = $xml->children();
$layer_one[0]->bookname = "PHP高手之路";
//print_r($layer_one);
$modify = $xml->asXML(); /*格式为XML对象*/
file_put_contents("book.xml",$modify);/*将修改写入到XML文件中*/
$str = file_get_contents("book.xml");
echo $str;

====================================================

此外我们还可以使用DOM类库来遍历XML文档,DOM是通过树状结构模式来遍历XML文档。使用DOM变量文档

的好处是不需要标记就可以显示所有内容,但是缺点是十分消耗内存。

那么如何解析一个XML文档呢?

<?php
header("Content-Type:text/html;charset=UTF-8");
$dom = new DOMDocument; /*初始化DOMDocument对象*/
$dom->load("book.xml");/*载入book.xml 注意,不要使用loadXML()*/
$names = $dom->getElementsByTagName("bookname");/*根据标签名获得DomNode列表*/
foreach($names as $name){ /*遍历DomNode*/
    print $name->nodeValue."<br>";
}
时间: 2024-10-19 07:18:01

PHP入门(17)PHP与XML的相关文章

iOS开发入门——17条 Swift 最佳实践规范(下)

文章来源:http://www.zretc.com/technologyDetail/433.html 承接上文:iOS开发入门--17条 Swift 最佳实践规范(上) 9.单例(Singletons) 在Swift中单例是很简单的: class ControversyManager { static let sharedInstance = ControversyManager()} Swift 的 runtime 会保证单例的创建并且采用线程安全的方式访问. 单例通常只需要访问"share

[CareerCup] 17.10 Encode XML 编码XML

17.10 Since XML is very verbose, you are given a way of encoding it where each tag gets mapped to a pre-defined integer value. The language/grammar is as follows: Element --> Tag Attributes END Children END Attribute --> Tag Value END --> 0 Tag -

Flask快速入门(17) — flask_session

Flask快速入门(17) - flask_session 作用:将默认保存的签名cookie中的值,保存到 redis/memcached/file/Mongodb/SQLAlchemy 安装:pip install flask-session 使用1: from flask import Flask,session from flask_session import RedisSessionInterface import redis app = Flask(__name__) conn=r

Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)

Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个类,在类中有个方法(非静态的方法),要调用类中的这个方法,则需要创建类的对象,使用对象调用方法.创建类对象的过程,需要new出来对象:而ioc则是将对象的创建不是通过new方式实现,而是交给spring配置来创建对象(即,将对象的创建交给spring来管理): spring是一站式框架 spring

Web API入门之移除XML格式(一)

前言 回头想来,没想到自己却坚持下来了,EntityFramework系列终于全部完成了,给自己点个赞先.本系列将着手于Web API,关于一些基础的介绍及定义就不再叙述,请参考园友们文章,非常详细,我也是在此基础上步入学习的. 简短介绍 我们知道Web API是基于ASP.NET平台构建RESTful应用程序的框架(关于RESTful请参考园友Liam Wang关于其详细介绍),通过访问在方法标记为HttpPost.HttpGet.HttpPut等得知. 问题探讨 我们知道Web API默认输

mybatis 详解(二)------入门实例(基于XML)

通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一个入门实例来对mybatis有更近一步的了解. 我们用 mybatis 来对 user 表进行增删改查操作. ps:本篇博客源代码链接:http://pan.baidu.com/s/1eSEfc8i密码:j480 1.创建MySQL数据库:mybatisDemo和表:user 这里我们就不写脚本创建

iOS开发入门——17条 Swift 最佳实践规范(上)

文章来源:http://www.zretc.com/technologyDetail/432.html 前言 这篇IOS开发入门文章是我根据在 SwiftGraphics 工作时的一系列笔记整理出来的.文中大多数建议是经过深思熟虑的,但仍可以有其他类似的解决方法.因此,如果其他方案是有意义的,这些方案会被添加上去. 这个最佳实践不是强加或者推荐 Swift 在程序.面向对象或者函数风格上的应用.更重要的是,这里要讲述的是务实的方法.如有需要的话,某些建议可能会集中在面向对象或者实用的解决方法.

02SpringMvc_springmvc快速入门小案例(XML版本)

这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图: 第一步:创建springmvc-day01这么一个web应用 第二步:导入springioc,springweb , springmvc相关的jar包 第三步:在/WEB-INF/下创建web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.

二、入门实例,基于XML

1.创建MySQL数据库:mybatisDemo和表:user 这里我们就不写脚本创建了,创建完成后,再向其中插入几条数据即可. user 表字段如下: 回到顶部 2.建立一个Java工程,并导入相应的jar包,具体目录如下 注意:log4j和Junit不是必须的,但是我们为了查看日志以及便于测试,加入了这两个jar包 回到顶部 3.在 MyBatisTest 工程中添加数据库配置文件 mybatis-configuration.xml 1 2 3 4 5 6 7 8 9 10 11 12 13

MyBatis入门程序(基于XML配置)

创建一个简单的MyBatis入门程序,实现对学生信息的增删改查功能(基于XML配置) 一.新建一个Java工程,导入MyBatis核心jar包.日志相关的jar包以及连接Oracle数据库所需驱动包,目录结构如下 二.创建MyBatis核心配置文件mybatis-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//myba