愿天堂没有Java之XML
目录
JavaSE 笔记(完)
Java 是一门非常严谨的语言
解析技术
认识一下嘛
- XML 主要用于存储数据、做配置信息、进行数据传输
- 主要有两种解析方式:SAX 解析、DOM 解析
常见解析工具
名称 | 说明 |
---|---|
JAXP |
SUN公司提供的一套XML的解析的API |
JDOM |
JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 |
dom4j |
是JDOM的升级品,用来读写XML文件的。具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom 技术,同时它也是一个开放源代码的软件,Hibernate也用它来读写配置文件。 |
jsoup |
功能强大DOM方式的XML解析开发包,尤其对HTML解析更加方便 |
文档对象模型
- Document 对象:整个 XML 文档
- Node 对象:
- Element 对象:标签
- Attribute 对象:属性
- Text 对象:文本内容
Dom4j 解析框架
-
SAXReader 类
构造器/方法 说明 public SAXReader()
创建Dom4J的解析器对象 Document read(String url)
加载XML文件成为Document对象 -
Document 类
方法名 说明 Element getRootElement()
获得根元素对象 -
解析节点
方法名 说明 List<Element> elements()
得到当前元素下所有子元素 List<Element> elements(String name)
得到当前元素下指定名字的子元素返回集合 Element element(String name)
得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个 String getName()
得到元素名字 String attributeValue(String name)
通过属性名直接得到属性值 String elementText(子元素名)
得到指定名称的子元素的文本 String getText()
得到文本 -
用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
public void test() throws Exception { // 1、导入框架 // 2、创建SaxReader对象 SAXReader saxReader = new SAXReader(); // 3、加载XML文件成为文档对象Document对象。 Document document = saxReader.read(Dom4JTest2.class.getResourceAsStream("/poria.xml")); // 4、先拿根元素 Element root = document.getRootElement(); // 5、提取contact子元素 List<Element> contactEles = root.elements("contact"); // 6、准备一个ArrayList集合封装联系人信息 List<Contact> contacts = new ArrayList<>(); // 7、遍历Contact子元素 for (Element contactEle : contactEles) { // 8、每个子元素都是一个联系人对象 Contact contact = new Contact(); // 因为解析出的值都是 String 类型,所以需要类型转换 contact.setId(Integer.valueOf(contactEle.attributeValue("id"))); contact.setVip(Boolean.valueOf(contactEle.attributeValue("vip"))); contact.setName(contactEle.elementTextTrim("name")); contact.setGender(contactEle.elementTextTrim("gender").charAt(0)); contact.setEmail(contactEle.elementText("email")); // 9、把联系人对象数据加入到List集合 contacts.add(contact); } // 10、遍历List集合 for (Contact contact : contacts) { System.out.println(contact); } }
检索技术
认识一下嘛
- XPath 在解析 XML 文档方面提供了一独树一帜的路径思想,更加优雅,高效
- XPath 使用路径表达式来定位 XML 文档中的元素节点或属性节点
常用方法
方法名 | 说明 |
---|---|
Node selectSingleNode("表达式") |
获取符合表达式的唯一元素 |
List<Node> selectNodes("表达式") |
获取符合表达式的元素集合 |
检索:绝对路径
- 采用绝对路径获取从根节点开始逐层的查找节点列表并打印信息
方法名 说明 /根元素/子元素/孙元素
从根元素开始,一级一级向下查找,不能跨级
检索:相对路径
-
先得到根节点
-
再采用相对路径获取下一级节点的子节点并打印信息
方法名 说明 ./子元素/孙元素
从当前元素开始,一级一级向下查找,不能跨级
检索:全文搜索
- 直接全文搜索所有的元素并打印
方法名 说明 //元素
找元素,无论元素在哪里 //元素/子元素
找元素,无论在哪一级,但子元素一定是元素的子节点 //元素//子孙元素
元素无论在哪一种,子孙元素只要是元素的子孙元素都可以找到
检索:属性查找
- 在全文中搜索属性,或者带属性的元素
方法名 说明 //@属性名
查找属性对象,无论是哪个元素,只要有这个属性即可。 //元素[@属性名]
查找元素对象,全文搜索指定元素名和属性名。 //元素//[@属性名="值"]
查找元素对象,全文搜索指定元素名和属性名,并且属性值相等。