一:xml文件解析

首先看一下:我们要解析的内容:

 <?xml version="1.0" encoding="gbk" ?>
- <bookstore>
- <book id="1">
<title tid="1">Harry Potter</title>
<author>J K Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
- <book id="2">
<title tid="2">Harry Potter</title>
<author>J K Rowling</author>
<year>2006</year>
<price>39.99</price>
</book>
- <book id="3">
<title tid="1">明朝那些事儿</title>
<author>当年明月</author>
<year>2009</year>
<price>19.99</price>
</book>
</bookstore>

我们看一下:我们的DOM结构图:


通过上面的图:我们首先了解了一个book.xml中各个结点都叫什么,但是,值得注意的是:

<book id="1">

中的id是:属性结点。

那么解析的过程是这样的。

public class TestDOMBook {
public static void main(String[] args) {
// 1、得到DOM解析器的工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
// 2、从DOM工厂获得DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 3、解析XML文档,得到一个Document,即DOM树
Document doc = db.parse("e:/book.xml");
// 4、得到所有book节点列表信息
NodeList petList = doc.getElementsByTagName("book");
// 5、轮循书本信息
System.out.println("XML文件中book的初始化信息:");
for (int i = 0; i < petList.getLength(); i++) {
// 得到book元素
Element book = (Element) petList.item(i);
// 得到book元素下的id属性的值
String strId = book.getAttributeNode("id").getNodeValue();
System.out.println("ID:" + strId);
// 得到book下的title子元素节点下的子文本节点的值
String strTitle = book.getElementsByTagName("title").item(0)
.getFirstChild().getNodeValue();
// 得到book下的title子元素节点
Element title = (Element) book.getElementsByTagName("title")
.item(0);
// 得到title元素节点的tid属性节点的值
String strTid = title.getAttributeNode("tid").getNodeValue();
String strAuthor = book.getElementsByTagName("author").item(0)
.getFirstChild().getNodeValue();
String strYear = book.getElementsByTagName("year").item(0)
.getFirstChild().getNodeValue();
String strPrice = book.getElementsByTagName("price").item(0)
.getFirstChild().getNodeValue();
System.out.println("标题:" + strTitle);
System.out.println("标题ID:" + strTid);
System.out.println("作者:" + strAuthor);
System.out.println("出版日期:" + strYear);
System.out.println("价格:" + strPrice);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

二.Json数据解析

Example 1:

我们要解析一下一段键值对。

/***
* {
* "weatherinfo":
*
* {"city":"北京",
* "cityid":"101010100",
* ,
* "WD":"西南风",
* "WS":"1级","SD":"93%",
* "WSE":"1","time":"08:45",
* "isRadar":"1",
* "Radar":"JC_RADAR_AZ9010_JB"}
* }
*
*/

注意:我们要用到一个org.json.jar包:

解析的过程是:

public static String setInit() throws JSONException {
JSONObject json = new JSONObject();
JSONObject js = new JSONObject();
js.put("city", "北京");
js.put("temp", "26");
js.put("WD", "西南风");
json.put("weatherinfo", js);
return json.toString(); } public static void getInit(String str) throws JSONException {
JSONObject jsonObject = new JSONObject(str);
JSONObject js = jsonObject.getJSONObject("weatherinfo");
String a = js.getString("city");
int b = js.getInt("temp");
String c = js.getString("WD");
System.out.println(a + b + c); }

测试代码:北京26西南风

Example 2:

升华一下:看看我们如何动态获取天气文本信息:

String urlstr = "http://www.weather.com.cn/data/sk/101010100.html";
try {
URL url = new URL(urlstr); //URL 统一资源定位符
HttpURLConnection huc = (HttpURLConnection)url.openConnection();
huc.setRequestMethod("GET");
InputStreamReader is = new InputStreamReader(huc.getInputStream(),"UTF-8");
BufferedReader bufferedReader = new BufferedReader(is);
String mString = "";
String m = "";
while ((m = bufferedReader.readLine())!=null) {
mString+=m;
}
System.out.println(mString);
getInit(mString);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

android基础篇------------java基础(11)(文件解析xml and Json )的更多相关文章

  1. android基础篇------------java基础(12)(多线程操作)

    <一>基本概念理解 1.什么是进程? 进程就是在某种程度上相互隔离,独立运行的程序.一般来说,系统都是支持多进程操作的,这所谓的多进程就是让系统好像同时运行多个程序. 2.什么是线程呢? ...

  2. Java学习 (四)基础篇 Java基础语法

    注释&标识符&关键字 注释 注释并不会被执行,其主要目的用于解释当前代码 书写注释是一个非常好的习惯,大厂要求之一 public class hello { public static ...

  3. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  4. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  5. UI:数据的解析XML与JSON

    XML  和  JSON 语言  本篇博客来自互联网参考 XML 和 JSON 的互相转化 有属性的转化为对象,无属性的转化为字符串 节点的顺序性不可逆,XML有顺序,JSON 无顺序 XML 和 J ...

  6. boost-使用property_tree来解析xml、json

    property_tree是一个保存了多个属性值的树形数据结构,可以用来解析xml.json.ini.info文件.要使用property_tree和xml解析组件的话需要包含"boost/ ...

  7. Python解析xml与JSON

    xml与json是常用的文件交换格式,常用来表示网页的html则是xml的变种.解析xml和json在web开发中有着重要应用. DOM解析XML 文件对象模型(Document Object Mod ...

  8. 这篇 Java 基础,我吹不动了

    Hey guys,这里是程序员cxuan,欢迎你收看我最新一期的文章,这篇文章我补充了一些关于<Java基础核心总结>的内容,修改了部分错别字和语句不通顺的地方,并且对内部类.泛型等内容进 ...

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

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

随机推荐

  1. nginx升级至1.12.1版本

    nginx升级至1.12.1 编号 名称 说明 1 nginx-1.12.1.tar.gz nginx安装程序 2 nginx_upstream_check_module-master.zip 实现后 ...

  2. php返回json数据函数实例_php技巧_脚本之家

    本文实例讲述了php返回json数据函数的用法,分享给大家供大家参考.具体方法如下: json_encode()函数用法: echo json_encode(array('a'=>'bbbb', ...

  3. CGI、FastCGI和php-fpm的概念和区别

    CGI是HTTP Server和一个独立的进程之间的协议,把HTTP Request的Header设置成进程的环境变量,HTTP Request的正文设置成进程的标准输入,而进程的标准输出就是HTTP ...

  4. 搜索关键词智能提示suggestion

    转载自:stormbjm的专栏 题目详情:百度搜索框中,输入“北京”,搜索框下面会以北京为前缀,展示“北京爱情故事”.“北京公交”.“北京医院”等等搜索词,输入“结构之”,会提示“结构之法”,“结构之 ...

  5. hdu 1849(巴什博弈)

    Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. Effective STL 阅读笔记: Item 3: Make copying cheap and correct for objects in containers

    容器 (Containers) 用来存储对象 (Objects), 但是被存储的对象却并非原原本本是你给他的那一个, 而是你指定对象的一个拷贝.而后续对该容器内存储对象的操作,大多也是基于拷贝的. 拷 ...

  7. C++如何取得int型的最大最小值

    转:http://www.cnblogs.com/alex4814/archive/2011/09/12/2174173.html 當題目涉及到求最大最小值時,最初的比較數字就應當設置爲INT_MAX ...

  8. netty 基础知识

    http://my.oschina.net/bieber/blog/406799 线程模型 http://hongweiyi.com/2014/01/netty-4-x-thread-model/ h ...

  9. ref:一系列用于Fuzzing学习的资源汇总

    ref:http://www.freebuf.com/articles/rookie/169413.html 一系列用于Fuzzing学习的资源汇总 secist2018-04-30共185833人围 ...

  10. Android之 解析XML文件(1)—— Pull解析

    (以下文章基本照抄<第一行代码>) 解析XML文件有很多方法,这里主要讲Pull解析和SAX解析.这篇文章主要是讲Pull解析. 一.Pull解析参考代码 先上代码: private vo ...