XML文档组成:
声明:<?xml version="1.0" endcoding="UTF-8"?>
标记(元素、标签、节点):
开始标记(开放标记):<标记名称>
结束标记(闭合标记):</标记名称>
标记内容:开始标记和结束标记中间
标记的属性:在开始标记中的键值对,必须被引号引住
注释:不能写在声明前,不能嵌套。<!-- 注释 -->
<?xml version="1.0" endcoding="UTF-8"?>
<!--我是个栗子-->
<names id="10001" groupid="1">
<name>猪八戒 class="pig"</name>
<name>孙悟空 age="999"</name>
<cdata>我后面这一段不会被解析<![CDATA[我是CDATA,我不会被解析]]><cdata>
</names>
XML的解析方式:
SAX解析:按行解析
DOM解析:建立文档树模型
JDOM解析:JAVA特定的DOM解析
DOM4J解析:JDOM的智能分支,包括集成的XPath 支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项
解析XML:
URL url = new URL(网址字符串); //建网址对象
URLConnection conn = url.openConnection(); //打开网址
InputStream is = conn.getInputStream(); //获取XML资源的输入流
SAXRead sr = new SAXReader(); //读取流的工具对象
Domcument doc=sr.read(is); //用读取对象读流对象得到文档对象
【Element root = doc.addElement("根节点名称"); 】 //添加根节点方法
Element root = doc.getRootElement(); //通过文档对象得到根元素对象
Element类方法:
String getName(); //获取节点名称
String getText(); //获取节点内容
String setText(); //设置节点内容
Element element(String 子节点名称); //获取匹配名称的第一个子节点对象.
List<Element> elements(); //获取所有的子节点对象
String attributeValue(String 属性名称); //获取节点的属性值
String elementText(String 子节点名称); //获取子节点的内容
Element addElement(String 子节点名称); //添加子节点
void addAttribute(String 属性名
,String 属性值); //添加属性
XPATH解析XML:
路径表达式:
Node node = selectSingleNode("
路径表达式"); //Node是Element的父
List<Element> es = selectNodes("
路径表达式
");
生成XML:
1.
通过文档帮助器
(DocumentHelper) ,
创建空的文档对象
Document doc = DocumentHelper.createDocument();
2.
通过文档对象
,
向其中添加根节点
Element root = doc.addElement("根节点名称");
3.
通过根节点对象
root ,
丰富我们的子节点
Element e = root.addElement("元素名称
");
4.
创建一个文件输出流
,
用于存储
XML
文件
FileOutputStream fos = new FileOutputStream("要存储的位置
");
5.
将文件输出流
,
转换为
XML
文档输出流
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(fos.format);
6. 写出文档
xw.write(doc);
7.
释放资源
xw.close();
XStream:
1. 创建XStream 对象
XStream x = new XStream();
2.
修改类生成的节点名称
(
默认节点名称为 包名
.
类名
)
x.alias("节点名称
",
类名
.class);
3.
传入对象
,
生成
XML
字符串
String xml字符串
= x.toXML(
对象
);
对象格式:
java:
class Book{
private String name;
private String info;
get/set...
}
Book b = new Book();
b.setName(“金苹果
”);
b.setInfo(“种苹果
”);
...
js:
var b = new Object();
b.name = "金苹果
";
b.info = "种苹果
";
XML:
<book>
<name>金苹果</name>
<info>种苹果</info>
</book>
JSON:
{
"name":"金苹果",
"info":"种苹果"
}
[元素
1,元素2...] //数组格式。在
JSON
格式中可以与对象互相嵌套
解析JSON:
Gson:谷歌
String json = new Gson().toJSON(要转换对象);
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
FastJson:阿里
String json = JSON.toJSONString(要转换的对象);
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
Collection<类型> list=JSON.parseArray(JSON字符串,类型.class);