使用php操作xml教程

php操作xml

最近计划写个人的小网站,一系列原因选择了用php来写,最大的问题就是虽然php很流行,但我从来没有接触过php,看了一个多星期的基本语法后做些小练习热热身,但是期间是各种问题啊,主要是对php不熟悉,遇到一些总结一些吧。

数据

<?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几个基本概念

节点:节点也就是很多程序语言中处理XML时的Node,节点是一个比较宽泛的概念,在XML中元素,属性,名字空间,注释,文本内容,处理指令,还有整个文档都属于节点,也就是说XML文档中每个独立的一小部分都是节点,是,也是,name=”XXXX”也是,标签是,甚至作者的名字David Flanagan都是一个文本节点。

元素:很多程序语言都有对XML处理,节点是一个很宽泛的概念,因为要统一API,对节点不会有过多方法,而元素也就是Element是节点的一个子集,简单讲就是这样的标签才算,一般会有很多针对元素的操作方法。

属性:这个比较好理解,在<>里面的类似XX=”OO”等东西都是属性节点

转义字符:和HTML等类似,xml也有语言占用的符号,想使用的这些特殊字符的时候需要转义


<


&lt;


>


&gt;


&


&amp;



&apos;



&quot;

DOMDocument对象

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

属性 作用
attributes 节点属性集合
parentNode 节点父节点
documentElement 文档根节点
nodeName 节点的名字
nodeType 节点类型
nodeValue 节点值
Text 节点及其子节点转换为文字
方法 作用
appendChild 为节点添加子节点
createAttribute 创建属性节点
createElement 创建元素
getElementsByTagName 通过节点名获取节点集合
hasChildNodes 判断节点是否有子节点
insertBefore 在节点
Load 通过文档路径加载xml
loadXML 加载zml字符串
removeChild 删除子节点
removeAttribute 删除属性节点
save 保存文档

加载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 = new domxpath($books);
$bookElements=$xpath->query("/books/book");

修改属性/节点

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操作xml教程的文章就介绍到这了,更多相关php操作xml内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • linux下php安装xml扩展的详细步骤

    php linux下安装xml扩展 1.进入PHP安装源码包,找到ext下的ftp,进入 cd /home/local/php-5.6.25/ext/xml 2.第二步 /usr/local/php/bin/phpize 3.第三步 ./configure --with-php-config=/usr/local/php/bin/php-config 4.第四步 make && make install 5.第五步 cp /usr/local/php/lib/php/extensions/

  • php实现的数组转xml案例分析

    本文实例讲述了php实现的数组转xml.分享给大家供大家参考,具体如下: 0x00 需求 最近要做百度.360.神马搜索的网站sitemap,三家的格式都是xml,然而具体的细节还有有差别的. 一开始用的是dom,没有使用sax,写了几段便觉得太傻了,想到有没有数组转xml的库呢? 0x01 array2xml 搜索了一下,还真有地址为git,于是开始撸起袖子开始干. 示例如下: THE CODE: $xml = new ArrayToXML(); print $xml->buildXML($i

  • php 使用expat方式解析xml文件操作示例

    本文实例讲述了php 使用expat方式解析xml文件操作.分享给大家供大家参考,具体如下: test.xml: <?xml version="1.0" encoding="UTF-8"?> <notes> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body

  • PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】

    本文实例讲述了PHP创建XML的方法.分享给大家供大家参考,具体如下: 使用DOMDocument类创建xml config.php <?php $doc = new DOMDocument('1.0','utf-8'); $doc->formatOutput = true; //创建标签 $mysql = $doc->createElement("mysql"); $host = $doc->createElement("host"); $

  • PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】

    本文实例讲述了PHP读取XML文件的方法.分享给大家供大家参考,具体如下: 使用DOMDocument对象读取xml 创建一个DOMDocument对象 $doc = new DOMDocument(); 载入xml文件 $doc->load("book.xml"); 获取标签对象 $books = $doc->getElementsByTagName("book"); 获取标签的子对象 $titles = $book->getElementsBy

  • 使用php操作xml教程

    php操作xml 最近计划写个人的小网站,一系列原因选择了用php来写,最大的问题就是虽然php很流行,但我从来没有接触过php,看了一个多星期的基本语法后做些小练习热热身,但是期间是各种问题啊,主要是对php不熟悉,遇到一些总结一些吧. 数据 <?xml version="1.0"?> <books> <book name="JavaScript: The Defiitive Guide" publisher="O'Reil

  • PHP操作XML的教程详解

    php操作XML <?xml version="1.0" encoding="utf-8"?> <article> <item> <title size="1">title1</title> <content>content1</content> <pubdate>2009-10-11</pubdate> </item> <

  • PHP基于XMLWriter操作xml的方法分析

    本文实例讲述了PHP基于XMLWriter操作xml的方法.分享给大家供大家参考,具体如下: 接着昨天的这次再来学习一种读写xml的方式,这种方式主要围绕XMLWriter和XMLReader进行.前者用于生成xml,后者则是用来读取并解析xml.废话不多说一起来看看吧 1. 生成xml文件或字符串 <?php header("Content-type: text/html; charset=utf-8"); $xml=new XMLWriter(); //$xml->op

  • Python基于dom操作xml数据的方法示例

    本文实例讲述了Python基于dom操作xml数据的方法.分享给大家供大家参考,具体如下: 1.xml的内容为del.xml,如下 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'> <caption>Python

  • PHP操作XML中XPath的应用示例

    本文实例讲述了PHP操作XML中XPath的应用.分享给大家供大家参考,具体如下: XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 XPath 的提出的初衷是将其作为一个通用的.介于XPointer与XSLT间的语法模型.但是 XPath 很快的被开发者采用来当作小型查询语言. XPath设计的核心思想:迅速定位(不是通过循环遍历)到你所需要的元素(或者节点).PHP 文

  • C#对XmlHelper帮助类操作Xml文档的通用方法汇总

    前言 该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法(主要包括Xml序列化和反序列化,Xml文件读取,Xml文档节点内容增删改的一些通过方法).当然可能还有很多方法会漏了,假如各位同学好的方法可以在文末留言,我会统一收集起来. C#XML基础入门 https://www.jb51.net/article/104113.htm Xml反序列化为对象 #region Xml反序列化为对象 /// <summary>

  • php操作xml入门之cdata区段

    本文实例讲述了php操作xml入门之cdata区段.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <class>  <student id="No<001" 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文件,下载后保存为对应文件名) * 可以在下面的地址上单击右

随机推荐