栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

2021-10-04

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-04

XML与JSON

http(Hyper Text Transfer Protocol,HTTP)协议:超文本传输协议,是TCP/IP协议集中的协议,是一个简单的请求–响应协议,指定了客户端发送给服务器的消息以及服务器的响应.(所有的WWW文件都必须遵守这个标准 注:WWW万维网)

URL 是统一资源定位符(Uniform Resource Locator)的简称,它表示 Internet 上某一资源的地址。通过 URL 用
户可以访问各种网络资源,比如常见的 WWW 以及 FTP 站点。浏览器可以通过解析给定的 URL 在网络上查找相
应的文件或其他资源。

如何获取文件名称?
URL url = new URL("网址");
String name = url.getFile();
//获取文件路径+名称, 并从最后一个/开始截取, 截取到结尾
name = name.substring(name.lastIndexOf("/")+1,name.length());
import org.dom4j.document;
import org.dom4j.documentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class Demo_phone {
    public static void main(String[] args) throws IOException, documentException {
        // 自定义一个手机号码
        String phone ="13011321115"; //号码是随便改的
        // 1. 获取到XML资源的输入流
        URL url = new URL("http://apis.juhe.cn/mobile/get?phone="+phone+"&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");
        URLConnection connection = url.openConnection();
        InputStream inputStream = connection.getInputStream();
        // 2. 创建一个xml读取对象
        SAXReader saxReader =  new SAXReader();
        // 3. 通过读取对象 读取xml数据,并返回文档对象
        document document = saxReader.read(inputStream);
        // 4. 获取根节点
        Element root = document.getRootElement();
        // 5. 解析内容
       String code = root.elementText("resultcode");
        if ("200".equals(code)){
            Element result = root.element("result");
            String province = result.elementText("province");
            String city = result.elementText("city");
            if (province.equals(city)){
                System.out.println("手机号码归属地为: "+city);
            }else {
                System.out.println("手机号码归属地为: "+province+" "+city);
            }
        }else {
            System.out.println("请输入正确的手机号码!");
        }
    }
}

运行结果


在 java 开发中,有时候需要将中文进行转码,保证传输的时候不出现乱码;最常用的方式是 : URLEncode 与 URLDecod

//URLEncode
//将普通字符串转换成 application/x-www-from-urlencoded 字符串
//字符串中的非西欧字符的内容,会被转化成%XX%XX XX 为十六进制的数字
String urlString = URLEncoder.encode("你好", "UTF-8");
System.out.println(urlString);//输出:%E4%BD%A0%E5%A5%BD
//URLDecode
//将 application/x-www-from-urlencoded 字符串转换成普通字符串
String keyWord = URLDecoder.decode("%E4%BD%A0%E5%A5%BD", "UTF-8");
System.out.println(keyWord);//输出:你好

XML可扩展标记语言(eXtensible Markup Language)。
特性:
1. xml具有平台无关性, 是一门独立的标记语言.
2. xml具有自我描述性

.XML文件是保存XML数据的一种方式
XML数据也可以以其他的方式存在(如在内存中构建XML数据)。
不要将XML语言狭隘的理解成XML文件

注: CDATA 部分中的所有内容都会被解析器忽略 ( CDATA 部分由 “” 结束:)

XStream:快速的将Java中的对象,转换为XML字符串

使用步骤:
1. 创建XStream 对象
XStream x = new XStream();
[2].修改类生成的节点名称 (默认节点名称为 包名.类名)
x.alias("节点名称",类名.class);
3. 传入对象 , 生成XML字符串
String xml字符串 = x.toXML(对象);

案例:

import com.thoughtworks.xstream.XStream;
import lombok.Data;

import java.util.Objects;

@Data
public class Demo6 {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName("张三");
        p.setAge(18);

        //XStream使用
        //创建XStream对象
        XStream x = new XStream();
        //修改生成的跟节点
        x.alias("haha", Person.class);
        //传入对象,开始生成
        String xml = x.toXML(p);
        System.out.println(xml);

    }
	  static class Person{
        private String name;
        private  int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public Person() {
        }

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + ''' +
                    ", age=" + age +
                    '}';
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Person person = (Person) o;
            return age == person.age &&
                    Objects.equals(name, person.name);
        }

        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }
    }
}

运行结果:

//根据xml文档的路径来回去文档的内容,进行输出

import org.dom4j.document;
import org.dom4j.documentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws IOException, documentException {
        // 1. 获取输入流
        FileInputStream fileInputStream = new FileInputStream("d://Demo.xml");
        // 2. 创建xml读取对象
        SAXReader saxReader = new SAXReader();
        // 3. 读取并得到文档对象
        document document = saxReader.read(fileInputStream);
        // 4. 通过文档获取根元素
        Element root = document.getRootElement();
        // 5. 开始解析元素
        System.out.println(root.getName());

        List es = root.elements();
        for (int i = 0; i  

写的xml文档



    
        金苹果
        锄禾日当午
    
    
        银苹果
        汗滴禾下土
    

运行结果:

books
1001
金苹果
锄禾日当午
------------------------------
1002
银苹果
汗滴禾下土
------------------------------

Process finished with exit code 0
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298303.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号