2021-01-15

这篇博客详细介绍了XML的解析,包括SAXReader、XPath的使用,以及XML的生成。同时,还展示了JSON的转换,利用Gson和FastJson进行对象与Json之间的互转,并将Json转为集合。内容涵盖了基础操作和有条件的数据获取。
摘要由CSDN通过智能技术生成

XML和JSON

1 XML知识点

1.1 解析XML

public class Demo1 {
    public static void main(String[] args) throws IOException, DocumentException {
        FileInputStream fis=new FileInputStream("e://Demo.xml");
        SAXReader sr=new SAXReader();
        Document doc = sr.read(fis);
        Element root = doc.getRootElement();
        //System.out.println(root.getName());
        Element book = root.element("book");
        Element name=book.element("name");
        System.out.println(name.getText());
        /*List<Element> es=root.elements();
        for(int i=0;i<es.size();i++){
            Element book = es.get(i);
            System.out.println(book.elementText("id"));
            System.out.println(book.elementText("name"));
            System.out.println(book.elementText("info"));
            System.out.println("----------------");
        }*/
        fis.close();
    }

}

1.2 解析网址的XML

public class Demo2 {
    public static void main(String[] args) throws IOException, DocumentException {
        String phone="17845109827";
        URL url=new URL("http://apis.juhe.cn/mobile/get? phone="+phone+"&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");
        URLConnection conn = url.openConnection();
        InputStream is = conn.getInputStream();
        SAXReader sr=new SAXReader();
        Document doc = sr.read(is);
        Element root = doc.getRootElement();
        String code=root.elementText("resultcode");
        if("200".equals(code)){
            Element result = root.element("result");
            String provice = result.elementText("province");
            String city = result.elementText("city");
            if(provice.equals(city)){
                System.out.println("手机号码的归属地:"+provice);
            }
            else{
                System.out.println("手机号码的归属地:"+provice+" "+city);
            }
        }else{
            System.out.println("请输入正确的电话号码");
        }

    }
}

1.3 XPATH解析 (有条件解析)

public class Demo3 {
    public static void main(String[] args) throws IOException, DocumentException {
        FileInputStream fis=new FileInputStream("e://Demo.xml");
        SAXReader sr=new SAXReader();
        Document doc = sr.read(fis);
        /*List<Node> names=doc.selectNodes("//book[@id='1001']//name");
        for(int i=0;i<names.size();i++){
            System.out.println(names.get(i).getName());
            System.out.println(names.get(i).getText());
        }*/
        Node node = doc.selectSingleNode("//book[@id='1001']//name");
        System.out.println(node.getName()+":"+node.getText());
        fis.close();
    }
}

1.4 XPATH解析(有条件的网址)

public class Demo4 {
    public static void main(String[] args) throws IOException, DocumentException {
        String phone="17845109827";
        URL url=new URL("http://apis.juhe.cn/mobile/get? phone="+phone+"&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");
        URLConnection conn = url.openConnection();
        InputStream is = conn.getInputStream();
        SAXReader sr=new SAXReader();
        Document doc = sr.read(is);
        Node node = doc.selectSingleNode("//company");
        System.out.println("运营商:"+node.getText());
    }
}

1.5 XML生成

public class Demo5 {
    public static void main(String[] args) throws IOException {
        Document doc= DocumentHelper.createDocument();
        Element books = doc.addElement("books");
        for(int i=0;i<100;i++){
            Element book = books.addElement("book");
            Element name = book.addElement("name");
            name.setText(i+"种苹果的小姑娘");
            Element info = book.addElement("info");
            info.setText(i+"辛勤种植苹果的故事");
            book.addAttribute("id",100+i+"");
        }
        FileOutputStream fos=new FileOutputStream("f://books.xml");
        XMLWriter xw=new XMLWriter();
        xw.write(doc);
        xw.close();
        System.out.println("执行完毕");
    }
}

1.6 XStream方式生成XML

Person p=new Person();
        Person p1=new Person("李四",19);
        p.setName("张三");
        p.setAge(18);
        XStream x=new XStream();
        x.alias("person",Person.class);
        String s1 = x.toXML(p);
        String s2 = x.toXML(p1);
        System.out.println(s1);
        System.out.println(s2);

2 JSON知识点

2.1 对象转Json(Gson)

public class Demo1 {
    public static void main(String[] args) {
        /*Gson g=new Gson();
        Book b=new Book("100","金苹果","种植苹果真辛苦");
        String s = g.toJson(b);
        System.out.println(s);*/
        Book b=new Book("100","金苹果","种植苹果真辛苦");
        String s = new Gson().toJson(b);
        System.out.println(s);
    }
}

2.2 Json转对象(Gson)

public class Demo2 {
    public static void main(String[] args) {
        Gson g=new Gson();
        Book b = g.fromJson("{\"id\":\"100\",\"neme\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}", Book.class);
        System.out.println(b.getId());
    }
}

2.3 Json转集合(Gson)

public class Demo3 {
    public static void main(String[] args) {
        /*Gson g=new Gson();
        HashMap data = g.fromJson("{\"id\":\"100\",\"neme\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}", HashMap.class);
        System.out.println(data.get("id"));*/
        Gson g=new Gson();
        //{"id":"100","neme":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿嘿嘿"]}
        HashMap data = g.fromJson("{\"id\":\"100\",\"neme\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿嘿嘿\"]}", HashMap.class);
        //System.out.println(data.get("page").getClass());
        List page = (List) data.get("page");
        System.out.println(page.get(1));

    }
}

2.4 对象转Json(fastJson)

public class Demo4 {
    public static void main(String[] args) {
        Book b=new Book("1002","唐诗三百首","床前明月光,疑是地上霜,举头望明月,低头思故乡");
        String s = JSON.toJSONString(b);
        System.out.println(s);
    }
}

2.5 Json转对象(fastJson)

public class Demo5 {
    public static void main(String[] args) {
        //{"id":"1002","info":"床前明月光,疑是地上霜,举头望明月,低头思故乡","neme":"唐诗三百首"}
        Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"床前明月光,疑是地上霜,举头望明月,低头思故乡\",\"neme\":\"唐诗三百首\"}",Book.class);
        System.out.println(book.getInfo());
    }
}

2.6 Json转集合(fastJson)

public class Demo6 {
    public static void main(String[] args) {
        List<String> list = JSON.parseArray("[\"一二三\",\"四五六\",\"七八九\"]", String.class);
        System.out.println(list.get(1));
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值