最近工作要求从一个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. 翻译一篇关于jedis的文章

    翻译 自 http://www.baeldung.com/jedis-java-redis-client-libraryIntro to Jedis – the Java Redis Client L ...

  2. jmeter按比例执行业务场景

    可用函数 __counter实现: 函数助手中 找到 __counter,如 ${__counter(false,num)},功能简介 ---- 参数为true,每个用户有自己的计数器 ---- 参数 ...

  3. AngularJS [ 快速入门教程 ]

      前  序 S    N AngularJS是什么? 我想既然大家查找AngularJS就证明大家多多少少对AngularJS都会有了解. AngularJS就是,使用JavaScript编写的客户 ...

  4. Day3 文件操作和函数

    一 文件操作 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1.1打开文件读取内容 print(open("sounds","r", ...

  5. JAVA多线程---高并发程序设计

    先行发生原则 程序顺序原则:一个线程内保证语义的串行性 volatile:volatile变量的写,先发生于读,这保证了volatile变量的可见性 锁规则:解锁必然发生在随后的加锁前 传递性:A优先 ...

  6. [bzoj1066] [SCOI2007] 蜥蜴 - 网络流

    在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个 ...

  7. Ionic3学习笔记(四)修改返回按钮文字、颜色

    本文为原创文章,转载请标明出处 目录 修改返回按钮文字 修改返回按钮颜色 1. 修改返回按钮文字 参考官网 Ionic API---Config 文档 可在 ./src/app/app.module. ...

  8. 【技巧】datagrid锁定列后重新加载时出现错位问题的解决

    [问题描述]:有时候datagrid设置了锁定列后,在重新加载datagrid数据时,出现锁定列与非锁定列数据错位的问题,如图: [问题分析]:查看css样式我们发现,锁定的列和非锁定的列属于两个不同 ...

  9. 搭建LAMP环境示例

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  10. PHP MYSQL 搜索周边坐标,并计算两个点之间的距离

    搜索附近地点,例如,坐标(39.91, 116.37)附近500米内的人,首先算出“给定坐标附近500米”这个范围的坐标范围. 虽然它是个圆,但我们可以先求出该圆的外接正方形,然后拿正方形的经纬度范围 ...