【JavaWeb-3】XML的解析与XPath的使用
来源:互联网 发布:轩辕剑纹身进阶数据 编辑:程序博客网 时间:2024/05/24 06:32
1、XML有两种约束方式,一种是dtd(内部dtd和外部dtd,一般外部dtd用的较多),文件后缀是.dtd。另一种是schema,schema的约束更为详细,可以详细到规定只能允许哪些元素、哪些值,文件后缀是.xsd。
2、解析XML的核心思想有SAX和DOM,工具包有很多个,比较流行的是dom4j,可以查看官方文档的quick start了解使用方法。实际开发中很少用到,在此只是了解解析原理和过程。
3、新建一个web project。复制一个dom4j-1.6.1.jar包到lib文件夹中(不需要我们自己创建lib目录),复制过来后,系统自动帮我们生成奶瓶,不需要我们自己Build Path。
4、拷贝一个待解析的students.xml文件到src下面。
package com.hello.TestDom4j;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.junit.Test;public class TestDom4j { @Test public void test1() throws DocumentException{ // 获得document对象 SAXReader reader=new SAXReader(); Document document=reader.read("src/students.xml"); // 获得里面的元素或者值 Element root=document.getRootElement(); List list=root.elements(); Element secondElement=(Element) list.get(1); String name=secondElement.element("name").getText(); System.out.println(name); }}
@Testpublic void test2() throws DocumentException{ SAXReader reader=new SAXReader(); Document document=reader.read("src/students.xml"); Element root=document.getRootElement(); treeWalk(root);}public void treeWalk(Element ele){ System.out.println(ele.getName()); for (int i = 0; i < ele.nodeCount(); i++) { Node node=ele.node(i); if(node instanceof Element){ treeWalk((Element)node); } }}
输出结果是:
studentsstudentnameagestudentnameage
5、XPath的应用主要在于选择节点元素上,其余的和dom4j一样。
注意:别忘了导入jaxen的jar包。
@Test public void test3() throws DocumentException{ SAXReader reader=new SAXReader(); Document document=reader.read("src/students.xml"); Node node=document.selectSingleNode("/students/student[2]/name"); System.out.println(node.getName()+"\t"+node.getText()); } @Test public void test4() throws DocumentException{ SAXReader reader=new SAXReader(); Document document=reader.read("src/students.xml"); List list=document.selectNodes("//student/name"); for (int i = 0; i < list.size(); i++) { Node node=(Node) list.get(i); System.out.println(node.getName()+"\t"+node.getText()); } }
注意:xpath的用法之前在scrapy中学过也实践过,用法都一样,只不过前者是针对xml后者主要是针对html。
0 0
- 【JavaWeb-3】XML的解析与XPath的使用
- 使用dom4j的xPath解析XML
- 使用dom4j的xPath解析XML
- 使用dom4j的xPath解析XML
- XML XPath的使用
- XML的XPath解析方式
- 使用XPATH解析xml
- dom4j使用XPath解析XML返回null的解决方法
- xml中xPath的使用
- javaWeb的XML-pull解析。
- XML 的 Dom4j 解析范例,以及 XPath
- 深入XPath对xml文件的解析
- DOM4J解析XML(强大的XPath)
- xml解析-dom4j对XPATH的支持
- xpath解析xmlns字段的xml文件
- Dom4j和XPath的XML解析技术
- 使用XPath解析XML文件
- dom4j使用XPath解析xml
- synchronized和ReentrantLock介绍
- Code Review中的几个提示
- jQuery 知识点(六) —— jQuery 工具函数和全局属性
- Nested List Weight Sum II
- Unity预编译宏定义
- 【JavaWeb-3】XML的解析与XPath的使用
- C++中堆和栈(非数据结构的heap and stack)的完全解析
- 用qemu调试linux内核
- 寻找http://localhost/phpmyadmin出现的问题:HTTP 错误 404.0 - Not Found 您要找的资源已被删除、已更名或暂时不可用
- BZOJ 1602 [Usaco2008 Oct]牧场行走
- C语言学习笔记 lesson3 整数类型
- Php服务器部署问题之http错误404.3-Not Found
- Brothers 纪中4764 模拟
- Crisis 纪中 4765 树形dp