最近工作要求从一个XML文档中批量读取APK应用数据,自然想到用SimpleXML。经过一段时间摸索,终于成功解析,现在将思路以及代码做下记录:

xml文件格式大致如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html>

<html xmlns="http//www.w3.org/1999/xhtml" xml:lang="en">

  <body>

    <appinfos>

      <appinfo>

        <name>app1</name>
        <icon>http://www.baidu.com/pic/dxdfdf.png</icon>         <downurl>http://www.baidu.com/down/sdkdfk.apk</downurl>         <screenshot1>http://www.baidu.com/pic/sdfuererieir.png</screenshot1>       </appinfo>         <name>app2</name>         <icon>http://www.baidu.com/pic/dxdfdf.png</icon>         <downurl>http://www.baidu.com/down/sdkdfk.apk</downurl>         <screenshot1>http://www.baidu.com/pic/sdfuererieir.png</screenshot1>       </appinfo>         <name>app3</name>         <icon>http://www.baidu.com/pic/dxdfdf.png</icon>         <downurl>http://www.baidu.com/down/sdkdfk.apk</downurl>         <screenshot1>http://www.baidu.com/pic/sdfuererieir.png</screenshot1>       </appinfo>     </appinfos>   </body> </html>

我得需求是要从这个文件中得到所有的apk信息(apk1,apk2,apk3....)。php代码是这样的:

<?php
header("content-type:text/html;charset=utf-8");
error_reporting(E_ALL);
$xmlObj = simplexml_load_file("new.xml");
foreach($xmlObj->body->appInfos->appInfo as $key => $val){
foreach($val as $ck => $cv){
$arr[$ck] = (string)$cv;  //这个地方的string做了强制转换,否则系统会仍为$cv是一个simpleXML对象,这样是得不到字符串结果的
}
var_dump($arr);
$str = json_encode($arr);
file_put_contents("data.txt",$str."\r",FILE_APPEND);
$arr = array();
}

观察这行代码:$xmlObj->body->appInfos->appInfo可以发现,SimpleXML的操作类似于一个嵌套对象,一级一级往下找,找到appInfo发现是多个,后面的代码遍历一下就得到结果了。

注意xml的标准比较严格,实体&,<,>,',"需要分别转义成&amp;,$lt;,$gt;,$apos;,$quot;

最末级的数据比如:<icon>http://www.baidu.com/pic/006.png</icon>,在</icon>前如果有换行读取时也是会报错的。还有,<br />一定要这样写才行。

使用SimpleXML解析xml文件数据的更多相关文章

  1. SimpleXML解析xml文件

    SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式. 与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据. Simp ...

  2. PHP使用SimpleElement创建和解析xml文件

    <!-- 使用SimpleXMLElement生成xml文件 --><?php//生成一个xml文件 //xml字符串$_xml = <<<_xml<?xml ...

  3. android解析xml文件的方式

    android解析xml文件的方式   作者:东子哥 ,发布于2012-11-26,来源:博客园   在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xm ...

  4. Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

    Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...

  5. android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库

    以下面xml文件为例对其解析(假设此xml就在服务器端Server项目下的servlet包下的MenuServlet文件的输出流中): <?xml version="1.0" ...

  6. 在java项目中怎样利用Dom4j解析XML文件获取数据

    在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...

  7. 编写Java程序,使用 dom4j 解析上一节王者荣耀“英雄”对应的Xml文件数据内容,打印输出,具体格式

    查看本章节 查看作业目录 需求说明: 使用 dom4j 解析上一节王者荣耀"英雄"对应的Xml文件数据内容,打印输出,具体格式如图所示 实现思路: 创建ParseHeroXML用于 ...

  8. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  9. Android开发学习---使用XmlPullParser解析xml文件

    Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将 ...

随机推荐

  1. vmware三种网络格式

    网络地址转换(NAT) 这种访问模式指的是虚拟机不占用主机所在局域网的ip,通过使用主机的NAT功能访问局域网和互联网,意味着虚拟机可以访问局域网中的其他电脑,但是其他电脑不知道虚拟机的存在. 使用这 ...

  2. ssl协议以及生成

    一.https协议https是一安全为目标的httpt通道,简单讲师http的安全版.即http下加入ssl层,https的安全基础是ssl,因此加密的详细内容就需要ssl.http和https的区别 ...

  3. String和StringBuffer分别作为参数传递注意项

    public staticvoid main(){ String s1 = "abc"; StringBuffer sb = new StringBuffer(); sb.appe ...

  4. 利用Docker快速创建Nginx负载均衡节点

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.Self-Host Kestrel 1. 在vs2017中新建dotnet core2. ...

  5. 匹配替换第n个字符串

    var name = "questions[0][question]",i=0; name.replace(/\[.+?\]/g, function(match, pos, ori ...

  6. 前端系列——jquery前端国际化解决方案“填坑日记”

    前言:最近,新的平台还没有开发完成,原来的老项目又提出了新的需求:系统国际化.如果是前后端完全分离的开发模式,要做国际化,真的太简单了,有现成的解决方案,基于Node构建的时下热门的任何一种技术选型都 ...

  7. [js高手之路] html5 canvas系列教程 - arc绘制曲线图形(曲线,弧线,圆形)

    绘制曲线,经常会用到路径的知识,如果你对路径有疑问,可以参考我的这篇文章[js高手之路] html5 canvas系列教程 - 开始路径beginPath与关闭路径closePath详解. arc:画 ...

  8. python 库之lxml安装 坑一个

    error: command 'C:\\Users\\Admin\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python ...

  9. IIS 500错误或无法显示此网页解决方法

    不知道是不是XP版本的原故,发现越来越多的XP系统装好IIS后连默认网站都打不开,(其他系统没有注意)出现几个大字,IIS 500错误.相信碰到这个问题的人都深有体会,确实很烦人.卸了IIS重装也是不 ...

  10. 寻找bug并消灭系列——记录在Android开发所遇到的bug(二)

    bug 1: bug描述: 无法成功地将edittext中的内容传入数据库中 bug动图: 经过: 最近写了个项目,项目要使用到SQL数据库,由于没有相关知识,便是找到了各种资料开始了自学之旅,在de ...