一: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. 94.Binary Tree Inorder Traversal---二叉树中序非递归遍历

    题目链接 题目大意:中序遍历二叉树.先序见144,后序见145. 法一:DFS,没啥说的,就是模板DFS.代码如下(耗时1ms): public List<Integer> inorder ...

  2. 005_linux下logrotate 配置和理解

    对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以 ...

  3. oracle客户端不需要配置tnsnames.ora文件直接连接服务器数据库

    在以前的oracle使用过程中,想要在客户端连接到服务器时,都是在客户端中的tnsnames.ora文件配置如以下内容: adb = (DESCRIPTION = (ADDRESS_LIST = (A ...

  4. centos 下tomcat 自动启动

    1.修改start.sh文件 vim /usr/local/tomcat8/bin/startup.sh 在文件头增加以下内容: #!/bin/sh # chkconfig: 2345 97 00 # ...

  5. 【C#日期系列(三)】--C#获取某个月的第一个星期几的年月日

    需要获取某个月的第一个星期几的年月日 简单写了一个算法 #region 计算每月第一个星期1-7是各是几号 /// <summary> /// 计算每月第一个星期1-7是各是几号 /// ...

  6. js中post中文参数转码和解码

    作为基础知识和血淋林的教训,前端一定要记得post请求时将参数中带有中文的部分进行转码!! var str='宋宇·特弱夫斯基'; //转码: encodeURI(encodeURI(str)) ; ...

  7. .NET基本权限系统框架源代码

    DEMO下载地址: 百度网盘:http://pan.baidu.com/s/147ilj http://download.csdn.net/detail/shecixiong/5372895 一.开发 ...

  8. heartbeat与keepalived的区别

    Heartbeat与Keepalived的区别 Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP):H ...

  9. SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...

  10. 【JAVAWEB学习笔记】网上商城实战4:订单模块

    今日任务 完成订单模块的功能 1.1      订单 模块的功能 1.1.1    我的订单: [我的订单的查询] * 在header.jsp中点击我的订单. * 提交到Servlet: * 获得用户 ...