• 售前

  • 售后

热门帖子
入门百科

利用php操纵xml教程

[复制链接]
李志敏 显示全部楼层 发表于 2021-8-14 14:32:11 |阅读模式 打印 上一主题 下一主题
php利用xml

最近操持写个人的小网站,一系列缘故原由选择了用php来写,最大的题目就是虽然php很流行,但我从来没有接触过php,看了一个多星期的根本语法后做些小练习热热身,但是期间是各种题目啊,紧张是对php不认识,遇到一些总结一些吧。
数据
  1. <?xml version="1.0"?>
  2. <books>
  3.     <book name="JavaScript: The Defiitive Guide" publisher="O'Reilly Media, Inc.">
  4.         <author>David Flanagan</author>
  5.     </book>
  6.     <book name="PHP anf MySQL Web Development" publisher="Perason Education">
  7.         <author>Luke Welling</author>
  8.         <author>Laura Thomson</author>
  9.     </book>
  10.     <book name="HTTP: The Defiitive Guide" publisher="O'Reilly Media, Inc.">
  11.         <author>David Courley</author>
  12.         <author>Brian Totty</author>
  13.     </book>
  14. </books>
复制代码
XML几个根本概念

节点:节点也就是许多程序语言中处置惩罚XML时的Node,节点是一个比力宽泛的概念,在XML中元素,属性,名字空间,解释,文本内容,处置惩罚指令,另有整个文档都属于节点,也就是说XML文档中每个独立的一小部分都是节点,是,也是,name=”XXXX”也是,标签是,以致作者的名字David Flanagan都是一个文本节点。
元素:许多程序语言都有对XML处置惩罚,节点是一个很宽泛的概念,因为要统一API,对节点不会有过多方法,而元素也就是Element是节点的一个子集,简朴讲就是这样的标签才算,一样平常会有许多针对元素的利用方法。
属性:这个比力好明确,在<>内里的雷同XX=”OO”等东西都是属性节点
转义字符:和HTML等雷同,xml也有语言占用的符号,想使用的这些特殊字符的时候必要转义
            
<

            
            
<

            
            
>

            
            
>

            
            
&

            
            
&

            
            

            
            
&apos;

            
            

            
            
"

            
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
  1. $path=$_SERVER["DOCUMENT_ROOT"].'/books.xml';
  2.     $books=new DOMDocument();
  3.     $books->load($path);
复制代码
读取/遍历节点与属性
  1. $bookElements=$books->getElementsByTagName('book');
  2.     foreach($bookElements as $book){
  3.         foreach ($book->attributes as $attr) {
  4.             echo strtoupper($attr->nodeName).' —— '.$attr->nodeValue.'<br/>';
  5.         }
  6.         echo "AUTHOR: ";
  7.         foreach ($book->getElementsByTagName('author') as $author) {
  8.             echo $author->nodeValue.' ';
  9.         }
  10.         echo '<br/><br/>';
  11.     }
复制代码

当然对于许多属性,只想读一个,可以通过item(index)方法按索引读取
  1. echo $book->attributes->item(1)->nodeValue;
复制代码
还可以通过强盛的xpath查询
  1. $xpath = new domxpath($books);
  2. $bookElements=$xpath->query("/books/book");
复制代码
修改属性/节点
  1. foreach($bookElements as $book){
  2.         foreach ($book->attributes as $attr) {
  3.             #$book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
  4.             $attr->nodeValue=strtoupper($attr->nodeValue);
  5.         }
  6.         echo "AUTHOR: ";
  7.         foreach ($book->getElementsByTagName('author') as $author) {
  8.             $author->nodeValue=strtoupper($author->nodeValue);
  9.         }
  10.     }
  11.     $books->save($path);
复制代码

对属性修改可以直接访问其nodeValue改动,也可以使用setAttribute方法,改动完了别忘了使用save保存。
  1. $book->setAttribute($attr->nodeName,strtoupper($attr->nodeValue));
  2. $attr->nodeValue=strtoupper($attr->nodeValue);
复制代码
添加元素/属性
  1. $newBook=$books->createElement('book'); #创建新元素
  2.     $newBook->setAttribute('name','PHP Objects, Patterns, and Practice');#创建新属性,方法一
  3.     $publisher=$books->createAttribute('publisher');#创建新属性,方法二
  4.     $publisher->nodeValue='Apress L.P';
  5.     $newBook->appendChild($publisher); #把属性添加到元素上
  6.     $author=$books->createElement('author');#创建子元素
  7.     $author->nodeValue='Matt Zandstra';
  8.     $newBook->appendChild($author);#把子元素添加到父元素上
  9.     $books->documentElement->appendChild($newBook);#添加整个节点
  10.     $books->save($path);
复制代码
删除属性/节点
  1. $first=$bookElements->item(0);
  2.     $first->removeAttribute('publisher');
  3.     $second=$bookElements->item(1);
  4.     $second->parentNode->removeChild($second);
  5.     $books->save($path);
复制代码

到此这篇关于使用php利用xml教程的文章就先容到这了,更多干系php利用xml内容请搜刮草根技能分享从前的文章或继承浏览下面的干系文章盼望各人以后多多支持草根技能分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作