java基础第八讲——URL、XML的解析
来源:互联网 发布:阿里云ace下线原因 编辑:程序博客网 时间:2024/05/29 02:56
目录
url
XML的解析
url
网址。例:http://www.baidu.com
/** * url的测试 将网路上的一张图片写到硬盘中 * @author Administrator * */public class Test { public static void main(String[] args) { urltest(); } public static void urltest() { try { File file = new File("d://tangYan.jpg"); if (!file.exists()) { file.createNewFile(); } URL url = new URL("http://f.hiphotos.baidu.com/image/pic/item/5fdf8db1cb1349540cf84bbf534e9258d0094a02.jpg"); InputStream is = url.openStream(); byte[] array = new byte[1024]; OutputStream os = new FileOutputStream(file); int i = is.read(array); while (i!=-1) { os.write(array, 0, i); i = is.read(array); } os.flush(); os.close(); is.close(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
xml的解析
形式
< a >开始标签
标题 (内容)
< / a >结束标签
可以嵌套
用来传输数据
*解析方式:
DOM解析
SAX解析
Json
DOM解析
(全部读到内存中 大小10M)
DOM 文档对象模型
把XML文映射成一个倒挂的树
·创建解析器工厂对象
·有解析器工厂对象创建解析器对象
·由解析器对象对指定的XML文件进行解析,创建相应的DOM树,创建Document对象
·以Document对象为起点对DOM树的节点进行增删改查操作用的多
//DOM解析测试 public static void DOMtest() { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("d://11.txt"); NodeList list = document.getElementsByTagName("Weather");// 找到Weather标签 Node node = list.item(0); // 找到第一个Weather标签 Node child = node.getFirstChild(); // 找到Weather下的第一个子标签city Node next = child.getNextSibling(); // 得到city的下一个标签 while (next != null) { // 判断有没有走到最后一个标签 if (next.getNodeType() == Node.ELEMENT_NODE) { // 判断节点类型是不是ELEMENT_NODE Node contant = next.getFirstChild(); // 得到该节点的第一个子节点不能为空 if (contant != null) { System.out.println(contant.getNodeValue().trim());// String类型有一个方法trim去掉前后空格 } } next = next.getNextSibling(); } } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
SAX解析
内存消耗小
步骤:
/** * 继承DefaultHandler类 SAX解析 * 重写五个方法 * 如果找单独的标签内容,需要先定义布尔值,然后当标签为所查标签时,输出打印内容。 * @author Administrator * */public class MySAXHandler extends DefaultHandler{ private boolean isElement; @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); if (isElement) { System.out.println("找到啦~~~"+new String(ch,start,length).trim()); } System.out.println(new String(ch,start,length).trim()); } @Override public void endDocument() throws SAXException { super.endDocument(); System.out.println("解析文档结束"); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); System.out.println("标签结束"); isElement = false; } @Override public void startDocument() throws SAXException { super.startDocument(); System.out.println("解析文档开始"); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); isElement = qName.equals("city"); System.out.println(localName+"标签开始"+qName); }}//SAX解析测试 public static void SAXTest() { SAXParserFactory factory = SAXParserFactory.newInstance();//创建SAXParserFactory实例 try { //创建SAXParser的实例 SAXParser parser = factory.newSAXParser(); //创建SAXHandler类 MySAXHandler handler = new MySAXHandler(); parser.parse(new File("d://11.txt"), handler); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Json
必然用到
{}(Object)
[](Array)
key:value
/** * Json必然用到 */ public static void JsonTest() { String json = JSONString(); JSONObject object = JSONObject.fromObject(json); System.out.println(object.get("city")); JSONObject today = object.getJSONObject("today"); JSONArray array = today.getJSONArray("index"); for (int i = 0; i < array.size(); i++) { JSONObject obj = array.getJSONObject(i); System.out.println(obj.getString("name")); } } //自己创建的一个JsonString public static String JSONString() { JSONObject obj = new JSONObject(); obj.put("city", "北京"); obj.put("cityid", "123"); JSONObject today = new JSONObject(); today.put("date", "2015-08-03"); today.put("week", "星期一"); JSONArray array = new JSONArray(); JSONObject index1 = new JSONObject(); index1.put("name", "感冒"); JSONObject index2 = new JSONObject(); index2.put("name", "炎热"); JSONObject index3 = new JSONObject(); index3.put("name", "防晒"); array.add(index1); array.add(index2); array.add(index3); today.put("index", array); obj.put("today", today); System.out.println(obj.toString()); return obj.toString(); }
结果
0 0
- java基础第八讲——URL、XML的解析
- Java基础第八讲
- Java Web基础:第八讲 Java Web的发展历史
- JAVA基础——XML解析
- 第八讲 数据库基础
- JAVA基础--XML解析
- Java基础 XML解析
- java第八讲
- Java基础:第八讲 使用集成开发环境(上)
- java基础——XML和DOM解析
- JAVA基础——使用DOM4J 解析xml
- XML解析精讲
- java基础--解析XML(一)
- Java基础之解析XML
- Android基础—XML数据解析的三种方式
- 第八讲 java网络编程
- 第八讲 java网络编程
- 第八讲 Java网络编程
- 确定比赛名次
- Category Archives: 机器学习
- HTML5_插入标记
- 看opengl 写代码(12) 光
- Contiki例(二)执行被阻塞的任务第二种方法
- java基础第八讲——URL、XML的解析
- logistic回归与牛顿方法的python实现 (standford公开课程小作业)
- 黑马程序员---iOS基础---协议
- UITextField总结
- Java删除ArrayList中的重复元素的2种方法
- poj 1222 高斯消元详解
- URL
- Swap Nodes in Pairs
- 数据源架构模式之行入口模式