
我与xml的邂逅
发布日期:2021-05-18 08:43:46
浏览次数:26
分类:精选文章
本文共 4154 字,大约阅读时间需要 13 分钟。
PHP生成并解析XML技术实践指南
文章目录
1. PHP生成XML
2. PHP解析XML
1. PHP生成XML
PHP提供多种方法生成XML文件或字符串,以下是常用的四种方法
1.1 字符串拼接法
简单且高效,适合小规模数据生成
public function stringToXml() { $xml = ''; $xml .= ' '; foreach ($data as $item) { $xml .= ''; $xml .= 'title1'; $xml .= 'content1'; $xml .= '2020-11-14'; $xml .= ''; } $xml .= ' '; return $xml; }
1.2 DOM文档生成法
使用DOMDocument类创建XML文档,适合结构复杂的数据生成
public function domToXml() { $data = array( array('title' => 'title1', 'content' => 'content1', 'pubdate' => '2020-11-14'), array('title' => 'title2', 'content' => 'content2', 'pubdate' => '2020-11-11') ); $dom = new \DomDocument('1.0', 'utf-8'); $article = $dom->createElement('article'); $dom->appendChild($article); foreach ($data as $item) { $xmlItem = $dom->createElement('item'); $article->appendChild($xmlItem); foreach ($item as $key => $value) { $xmlNode = $dom->createElement($key); $xmlItem->appendChild($xmlNode); $xmlNode->appendChild($dom->createTextNode($value)); if (isset($attributes[$key])) { foreach ($attributes[$key] as $attribute => $value) { $xmlNode->appendChild($dom->createAttribute($attribute, $value)); } } } } return $dom->saveXML();}
1.3 XMLWriter类
推荐使用XMLWriter生成XML文件,支持多种编码格式
public function xmlWriter() { $data = array( array('title' => 'title1', 'content' => 'content1', 'pubdate' => '2020-11-14'), array('title' => 'title2', 'content' => 'content2', 'pubdate' => '2020-11-11') ); $attribute = array('title' => array('size' => 1)); $xml = new \XMLWriter(); $xml->openUri('php://output'); $xml->setIndent(4); $xml->setIndent(true); $xml->startDocument('1.0', 'utf-8'); $xml->startElement('article'); foreach ($data as $item) { $xml->startElement('item'); if (is_array($item)) { foreach ($item as $key => $value) { $xml->startElement($key); if (isset($attribute[$key]) && is_array($attribute[$key])) { foreach ($attribute[$key] as $attributeKey => $attributeValue) { $xml->writeAttribute($attributeKey, $attributeValue); } } $xml->text($value); $xml->endElement(); } } $xml->endElement(); } $xml->endElement(); $xml->endDocument(); $xml->flush();}
1.4 SimpleXML类
通过简单XML库快速生成和解析XML文件
public function simpleXml() { $xml = <<<'XML' $data $xml = simplexml_load_string($xml); foreach ($data as $item) { $xml->article->item->addChild('title', 'title1'); $xml->article->item->content = 'content1'; $xml->article->item->pubdate = '2020-11-14'; } return $xml->asXML();}
2. PHP解析XML
PHP提供多种方法解析XML文件,以下是常用两种方法
2.1 DOM解析方法
使用DOMDocument类解析XML文件
public function readXmlUseDom() { $doc = new \DOMDocument(); $doc->load('xml.xml'); $article = $doc->getElementsByTagName('article'); $result = array(); foreach ($article as $articleNode) { $title = $articleNode->getElementsByTagName('title')->item(0)->nodeValue; $content = $articleNode->getElementsByTagName('content')->item(0)->nodeValue; $pubdate = $articleNode->getElementsByTagName('pubdate')->item(0)->nodeValue; $result[$articleNode->ugador->getAttribute('id')]['title'] = $title; $result[$articleNode->ugador->getAttribute('id')]['content'] = $content; $result[$articleNode->ugador->getAttribute('id')]['pubdate'] = $pubdate; } return $result;}
2.2 SimpleXML Load方法
使用SimpleXML库快速解析XML文件
public function readSimple() { $xml = simplexml_load_file('xml.xml'); $result = array(); foreach ($xml as $key => $value) { $result[$key] = json_decode(json_encode($value), true); } return $result;}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月08日 23时25分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
iphone打字怎么换行_手持iPhone?你可能并不知道的小技巧!
2023-01-24
jaccard相似度_自然语言处理之文本相似度计算
2023-01-24
java 8 list对象属性判空_java ---- 认识类对象,属性和方法
2023-01-24
java http delete_java积累---HttpDelete请求方式传递参数
2023-01-24
java swing数据库,如何在Java swing中查看数据库结果集
2023-01-24
java xmpp 群聊,使用XMPPFramework openfire创建聊天室
2023-01-24
java 反义_java中一些常用的英语
2023-01-24
java 命令行 class_如何从命令行执行java .class
2023-01-24
java 字符编码过滤器_java web中字符编码的过滤器(Filter - 1)
2023-01-24
java 线程 栈_Java线程堆栈分析
2023-01-24
#NOIP前数学知识总结
2023-01-24
java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!
2023-01-24
java序列化_java对象的序列化和反序列化
2023-01-24
java开发区块链_用Java代码实现区块链
2023-01-24
java快捷键eclipse_eclipse的设置和一些快捷键
2023-01-24
java拼车平台(ssm框架毕业设计)
2023-01-24
Java指定区间返回随机数
2023-01-24
Java推动老年人社区服务(毕设源码+mysql+lw)
2023-01-24