简单读取XML的方法
输出结果:
DOM读取
$main=$doc->getElementsByTagName('main'); 返回的是一个集合 需要foreach遍历
$main=$doc->getElementsByTagName('main')->item(0) 返回的是一个具体的节点 如果有多个<main></main>返回第一个
$name=$title->nodeName; //节点名 title、list等
$value=$title->nodeValue; //节点值
http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp/
- <?xml version="1.0" encoding="gb2312"?>
- <xml>
- <site>
- <part id="1">
- <title id="a">czbin xml版块</title>
- <describe>xml的相关文章</describe>
- </part>
- <part id="2">
- <title id="b">czbin php版块</title>
- <describe>php的相关文章</describe>
- </part>
- <part id="3">
- <title id="c">czbin ajax版块</title>
- <describe>ajax的相关文章</describe>
- </part>
- </site>
- </xml>
- <?php
- $xml = simplexml_load_file('sxml.xml');
- $part = $xml->site->part;
- foreach ( $part as $content )
- {
- echo $content['id']."<br />";
- echo $content->title."<br />";
- echo $content->title['id']."<br />";
- echo $content->describe."<br />";
- }
- ?>
输出结果:
- 1
- czbin xml版块
- a
- xml的相关文章
- 2
- czbin php版块
- b
- php的相关文章
- 3
- czbin ajax版块
- c
- ajax的相关文章
DOM读取
- <?xml version="1.0" encoding="gb2312"?>
- <xml>
- <main>
- <list>1</list>
- <list>2</list>
- <list>3</list>
- </main>
- <main>
- <list>4</list>
- <list>5</list>
- <list>6</list>
- </main>
- <m>
- <list>7</list>
- <list>8</list>
- <list>9</list>
- </m>
- </xml>
- <?php
- $xml = new DOMDocument();
- $xml->load('cy.xml');
- $main = $xml->getElementsByTagName('main');
- foreach( $main as $main)
- {
- $list = $main->getElementsByTagName( "list" );
- foreach ( $list as $list )
- {
- $value = $list->firstChild->nodeValue;
- echo $value."<br />";
- }
- }
- $m = $xml->getElementsByTagName('m');
- foreach( $m as $m)
- {
- $list = $m->getElementsByTagName( "list" );
- foreach ( $list as $list )
- {
- $value = $list->firstChild->nodeValue;
- echo $value."<br />";
- }
- }
- ?>
- <?xml version="1.0" encoding="gb2312"?>
- <LevelOne>
- <LevelTwo>
- <LevelThree id="1">This is Text One</LevelThree>
- <LevelThree id="2">This is Text Two</LevelThree>
- <LevelThree id="3">This is Text Three</LevelThree>
- </LevelTwo>
- <LevelTwo>
- <LevelThree id="4">This is Text Four</LevelThree>
- <LevelThree id="5">This is Text Five</LevelThree>
- <LevelThree id="6">This is Text Six</LevelThree>
- </LevelTwo>
- </LevelOne>
- <?php
- $xml = new DOMDocument(); //建立一个DOMDocument
- $xml->load('cy.xml'); //Php指定需要读取xml文件的位置
- $LevelOne = $xml->getElementsByTagName('LevelOne');//按照名称取得节点,返回所有节点的集合,不过这里这样读LevelOne是没有意义的....
- $LevelOne = $xml->getElementsByTagName('LevelOne')->item(0);//返回第一个LevelOne节点中的内容
- $LevelTwo = $LevelOne->getElementsByTagName('LevelTwo'); //按照名称取得节点,返回所有LevelTwo
- foreach ( $LevelTwo as $Content )//循环读出所有LevelTwo,并在循环里,把LevelTwo用Content表示
- {
- $LevelThree = $Content->getElementsByTagName('LevelThree');//返回所有LevelThree
- foreach ( $LevelThree as $Concert )
- {
- $name = $Concert->nodeName;//节点名称
- $value = $Concert->nodeValue;//节点值
- $id = $Concert->getAttribute('id');//"id"属性值
- echo $name."<br />";
- echo $value."<br />";
- echo $id."<br />";
- }
- }
- ?>
$main=$doc->getElementsByTagName('main'); 返回的是一个集合 需要foreach遍历
$main=$doc->getElementsByTagName('main')->item(0) 返回的是一个具体的节点 如果有多个<main></main>返回第一个
$name=$title->nodeName; //节点名 title、list等
$value=$title->nodeValue; //节点值
http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp/
- <books>
- <book>
- <author>Jack Herrington</author>
- <title>PHP Hacks</title>
- <publisher>O'Reilly</publisher>
- </book>
- <book>
- <author>Jack Herrington</author>
- <title>Podcasting Hacks</title>
- <publisher>O'Reilly</publisher>
- </book>
- </books>
- <?php
- $doc = new DOMDocument();
- $doc->load( 'books.xml' );
- $books = $doc->getElementsByTagName( "book" );
- foreach( $books as $book )
- {
- $authors = $book->getElementsByTagName( "author" );
- $author = $authors->item(0)->nodeValue;
- $publishers = $book->getElementsByTagName( "publisher" );
- $publisher = $publishers->item(0)->nodeValue;
- $titles = $book->getElementsByTagName( "title" );
- $title = $titles->item(0)->nodeValue;
- echo "$title - $author - $publisher\n";
- }
- ?>
对数据进行解析是应用开发必不可少的一个环节。下面是使用XML Parser对XML文档进行解析的过程:
- <?php
- // 处理开始元素函数
- function startElementHandler($parser, $element, $attributes) {
- echo "元素开始:".$element."<br>";
- if($attributes) {
- echo "属性:";
- foreach ( $attributes as $key => $value ) {
- echo $key."=".$value." ";
- }
- echo "<br>";
- }
- }
- // 处理结束元素函数
- function endElementHandler($parser, $element) {
- echo "元素结束:".$element."<br><br>";
- }
- // 处理字符串数据函数
- function characterDataHandler($parser, $data) {
- if(trim($data)) {
- echo "字符串数据:".htmlspecialchars($data)."<br>";
- }
- }
- // 处理解析错误函数
- function parserError($parser) {
- $code = xml_get_error_code($parser);
- $error = xml_error_string($code);
- $errorColumn = xml_get_current_column_number($parser);
- $errorLine = xml_get_current_line_number($parser);
- return "错误代码:".$code." 错误:".$error."在第".$errorLine."行第".$errorColumn."列";
- }
- // 创建解析器
- $parser = xml_parser_create();
- // 注册元素处理函数
- xml_set_element_handler($parser, "startElementHandler", "endElementHandler");
- xml_set_character_data_handler($parser, "characterDataHandler");
- // 获取文件内容
- $xml = file_get_contents("parser.xml");
- // 开始解析parser.xml文档,解析错误就调用错误处理函数
- xml_parse($parser, $xml) or die(parserError());
- // 删除解析器并释放内存
- xml_parser_free($parser);
- ?>
我们给定的XML示例是:
- <?xml version="1.0" encoding="UTF-8"?>
- <phpedu>
- <title>PHP100</title>
- <item type="text" name="item">
- <contents type="text">PHP</contents>
- <contents>SQL</contents>
- <contents>Linux</contents>
- <contents>Apache</contents>
- </item>
- <address type="URL">www.php100.com</address>
- </phpedu>
多说一句:希望对您有所帮助!不同语言对XML的解析区别于形式,统一于本质!:)
相关推荐
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。
把代码放到Word中,通过开发工具——Visual Basic——插入模块,粘贴在里在,把在硅基流动中申请的API放到VBA代码中。在Word中,选择一个问题,运行这个DeepSeekV3的宏就可以实现在线问答
【毕业设计】java-springboot+vue机动车号牌管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计】java-springboot-vue交通管理在线服务系统的开发源码(完整前后端+mysql+说明文档+LunW).zip