android基础篇------------java基础(11)(文件解析xml and Json )
一: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 )的更多相关文章
- android基础篇------------java基础(12)(多线程操作)
<一>基本概念理解 1.什么是进程? 进程就是在某种程度上相互隔离,独立运行的程序.一般来说,系统都是支持多进程操作的,这所谓的多进程就是让系统好像同时运行多个程序. 2.什么是线程呢? ...
- Java学习 (四)基础篇 Java基础语法
注释&标识符&关键字 注释 注释并不会被执行,其主要目的用于解释当前代码 书写注释是一个非常好的习惯,大厂要求之一 public class hello { public static ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- UI:数据的解析XML与JSON
XML 和 JSON 语言 本篇博客来自互联网参考 XML 和 JSON 的互相转化 有属性的转化为对象,无属性的转化为字符串 节点的顺序性不可逆,XML有顺序,JSON 无顺序 XML 和 J ...
- boost-使用property_tree来解析xml、json
property_tree是一个保存了多个属性值的树形数据结构,可以用来解析xml.json.ini.info文件.要使用property_tree和xml解析组件的话需要包含"boost/ ...
- Python解析xml与JSON
xml与json是常用的文件交换格式,常用来表示网页的html则是xml的变种.解析xml和json在web开发中有着重要应用. DOM解析XML 文件对象模型(Document Object Mod ...
- 这篇 Java 基础,我吹不动了
Hey guys,这里是程序员cxuan,欢迎你收看我最新一期的文章,这篇文章我补充了一些关于<Java基础核心总结>的内容,修改了部分错别字和语句不通顺的地方,并且对内部类.泛型等内容进 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
随机推荐
- grep 中的正则表达式【转】
正则表达式 正则表达式就是用于匹配每行输入的一种模式,模式是指一串字符序列.下面是范例: ^w1 w1|w2 [^ ] grep 正则表达式示例 在 /etc/passswd 目录中搜索 'vivek ...
- python使用requests模块模拟登陆知乎
from bs4 import BeautifulSoup import requests import time def captcha(captcha_data): with open(" ...
- Python中如何Debug
debug是编码是非常重要的调试技巧,通过在运行过程中设置断点,帮助开发人员更好的理解运行过程. Python中debug不像JAVA或者C++那样在IDE中设置断点那么直观. Python的debu ...
- ECMAScript 6 Promise 对象
一.Promise的含义 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消息. 1. ...
- EnumSet基本用法
enum Season { SPRING, SUMMER, FALL, WINTER } public class EnumSetTest { public static void main(Stri ...
- js写一个插件
//;分号开头,用于防止代码压缩合并时与其它代码混在一起造成语法错误 //而事实证明,uglify压缩工具会将无意义的前置分号去掉,我只是习惯了这么写 //(function(){})();立即执行函 ...
- Eclipse如何定位到某一个类所在硬盘上的位置
解决方法:安装OpenExplorer_1.5.0.v201108051513.jar插件 将OpenExplorer_1.5.0.v201108051513.jar文件添加到Eclipse所在目录下 ...
- lr获取响应结果中的乱码并转成中文
{,"message":"楠岃瘉鐮侀敊璇\xAF","developerMessage":"楠岃瘉鐮侀敊璇\xAF"} ...
- TestDirector其他
一.查看连接TD的用户 1.用单击界面上的“Connections”按钮,进入如下图: 二.Licenses管理 1.单击“Licenses”按钮,显示如下图: 2.单击“Modify License ...
- VS code配置docker的shell环境
今天尝试了下使用docker来做虚拟机,几番折腾后终于搞定可以用了,但是想着每次都要在命令行敲半天也太恶心了,所以就找了一下可视化的管理工具 首先说下,我的docker主机环境是windows10,用 ...