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
原创粉丝点击