本文小编为大家详细介绍“怎么使用php操作xml”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用php操作xml”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了遵化免费建站欢迎大家使用!
最近计划写个人的小网站,一系列原因选择了用php来写,最大的问题就是虽然php很流行,但我从来没有接触过php,看了一个多星期的基本语法后做些小练习热热身,但是期间是各种问题啊,主要是对php不熟悉,遇到一些总结一些吧。
David Flanagan Luke Welling Laura Thomson David Courley Brian Totty
节点:节点也就是很多程序语言中处理XML时的Node,节点是一个比较宽泛的概念,在XML中元素,属性,名字空间,注释,文本内容,处理指令,还有整个文档都属于节点,也就是说XML文档中每个独立的一小部分都是节点,是,也是,name=”XXXX”也是,标签是,甚至作者的名字David Flanagan都是一个文本节点。
元素:很多程序语言都有对XML处理,节点是一个很宽泛的概念,因为要统一API,对节点不会有过多方法,而元素也就是Element是节点的一个子集,简单讲就是这样的标签才算,一般会有很多针对元素的操作方法。
属性:这个比较好理解,在<>里面的类似XX=”OO”等东西都是属性节点
转义字符:和HTML等类似,xml也有语言占用的符号,想使用的这些特殊字符的时候需要转义
< | < |
> | > |
& | & |
‘ | ' |
“ | " |
我使用的是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 | 保存文档 |
$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."
"; } echo "AUTHOR: "; foreach ($book->getElementsByTagName("author") as $author) { echo $author->nodeValue." "; } echo "
"; }
当然对于很多属性,只想读一个,可以通过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”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。