作业:今天是 20xx 年 x 月 x 日,你作为优秀开发者被邀请参与 《微信开发者技 术沙龙》。 李老师是给你留下印象最深的受邀嘉宾,他属于鹅肠微信公众平台官方人 员,他的分享对你触动很大。他分享了公众平台接口数据格式 XML 与 JSON 混 乱的缘由。 在鹅肠微信公众平台设计早期,因为开发团队是从鹅肠其他团队凑的。内 部不同的子团队开发规范很不一致。很多老团队喜欢使用 XML 格式传输数据 (少数,点击查看),很多新人团队过来的成员喜欢使用 JSON 作为传输格式(多 数,点击查看)。为了团队的稳定,当时并没有对格式进行特殊的规则定制,导 致现在很多开发者对此怨声哀悼。 因为平台已经有了百万的开发者,再更改操作规范会导致大量生态问题的 发生,所以到目前问题依旧存在,难以修缮。 你在参与这次技术沙龙之前,对数据传输的格式不太在意。李老师的分享 对你触动很大,也让你明白了,开发时如果前后端没有一个合理统一的数据规 新职课教研教学中心 2 则,会有大量的不必要问题发生。所以你下定决心要掌握好 JSON 和 XML 技术。
第一步,记得在使用XML和JSON是添加jar包,jar包的添加方法就不在这说了
第二步:创建包,类,这应该都知道
然后就是代码了
这个是获取文档类容的
package xml;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.awt.print.Book;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
/**
* @Author:
* @Description:
* @Date Created in 2021-09-25 12:12
* @Modified By:
*/
public class Demo1 {
public static void main(String[] args) throws DocumentException, FileNotFoundException {
//找到目标文档
FileInputStream fis = new FileInputStream("D://Demo1.xml");
//刚刚添加的jar包就是为了使用这个对象
SAXReader sa = new SAXReader();
//这个文档对象
Document read = sa.read(fis);
//获取根节点
Element root = read.getRootElement();
//后面就是想要什么节点自己看就行了
Element s = root.element("book");
String book = s.elementText("name");
System.out.println(book);
}
}
这个是读取网页内容的
package xml;
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.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
* @Author:
* @Description:
* @Date Created in 2021-09-25 14:25
* @Modified By:
*/
public class Demo2 {
public static void main(String[] args) throws IOException, DocumentException {
String phone = "15573014586";
//获得目标网里的xml
URL u = new URL("http://apis.juhe.cn/mobile/get?phone=" + phone + "&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253");
//一步步获取读取对象
URLConnection conn = u.openConnection();
InputStream is = conn.getInputStream();
//jar包里的对象创建
SAXReader sa = new SAXReader();
Document docu = sa.read(is);
//获取根节点
Element rool = docu.getRootElement();
String s = rool.elementText("resultcode");
System.out.println(s);
}
}
这个是自己生成xml文件
package xml;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
import javax.sql.rowset.spi.XmlWriter;
import java.io.*;
/**
* @Author:
* @Description:
* @Date Created in 2021-09-25 14:53
* @Modified By:
*/
public class Demo3 {
public static void main(String[] args) throws IOException {
//利用文档生成器生成文档
Document doc = DocumentHelper.createDocument();
//生成根节点啥的,一步步添加内容
Element books = doc.addElement("books");
Element book = books.addElement("book");
Element name = books.addElement("name");
Element text = name.addText("哈哈哈");
//创建文件输出流,并设置保存的位置
FileOutputStream fos=new FileOutputStream("D://a.xml");
XMLWriter xm=new XMLWriter(fos);
//写入之后记得关闭
xm.write(doc);
xm.close();
}
}
json
先创建一个图书对象,这个应该都会
package json;
/**
* @Author:
* @Description:
* @Date Created in 2021-09-25 15:07
* @Modified By:
*/
public class Book {
private int num;
private String name;
private String info;
@Override
public String toString() {
return "Book{" +
"num=" + num +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public Book(int num, String name, String info) {
this.num = num;
this.name = name;
this.info = info;
}
public Book() {
}
}
然后利用谷歌的gson生成json,也可以用阿里之类别的,记得导入jar包
package json;
import com.google.gson.Gson;
/**
* @Author:
* @Description:使用json
* @Date Created in 2021-09-25 14:52
* @Modified By:
*/
public class Dome {
public static void main(String[] args) {
/*这个注释起来的是转换成json的代码
//先生成一个图书对象
Book b=new Book(1001,"语文书","教我们认字");
用new gson().tojson方法转成字符串
String s = new Gson().toJson(b);
System.out.println(s);*/
//{"num":1001,"name":"语文书","info":"教我们认字"}
//下面的是解析json,我直接写一个代码里了
//创建一个gson对象
Gson g=new Gson();
//用fromjson方法传入一串字符,参数二则是你要转成什么对象
Book b = g.fromJson("{\"num\":1001,\"name\":\"语文书\",\"info\":\"教我们认字\"}", Book.class);
System.out.println(b.getInfo());
}
}
最后我个人认为还是json更方便。