XML解析
来源:互联网 发布:oracle数据库使用手册 编辑:程序博客网 时间:2024/06/05 20:15
使用DOM4j解析xml文件
下面的两中方式都需要导入dom4j的jar包,我的资源里下载。
* xml常用的解析器:
* JAXP:sun公司提供的解析。支持dom和sax。
* JDOM:
* DOM4J:dom for java民间方式,但是是事实方式。非常好。 支持dom
1.导入jar包 dom4j.jar
2.创建解析器
SAXReader reader = new SAXReader();
3.解析xml 获得document对象
Document document = reader.read(url);
* XPATH:专门用于查询
* 定义了一种规则。
* 使用的方法:
* selectSingleNode():
* selectNodes():
使用步骤:
1、注意:要导包 jaxen…jar
2、创建解析器
SAXReader reader = new SAXReader();
3、解析xml 获得document对象
Document document = reader.read(url);
DOM4j解析
public static void main(String[] args) throws DocumentException { //使用Dom4j解析Book.xml, 得到第二本书的书名儿 //创建解析器对象 SAXReader reader = new SAXReader(); //得到整个xml文档的Docuemnt对象 Document doc = reader.read("src/Book.xml"); //得到根节点 Element root = doc.getRootElement(); //得到根节点后,我们可以一层一层的向下获取其他节点,树状// Element zi = root.element("书");//得到第一个书标签对象// Element zii = zi.element("书名");// System.out.println(zii.getText());//得到标签名字 List list = root.elements();//得到根节点的所有子标签节点 Element secondBook = (Element) list.get(1);//得到第二个书标签对象 Element child = secondBook.element("书名");//得到 "书名" 节点对象 System.out.println(child.getText());//得到节点后的文本 }
这里我们用了递归的方式遍历了xml文件的每一个元素
public static void main(String[] args) throws DocumentException { //使用Dom4j解析Book.xml, 得到所有的标签 SAXReader reader = new SAXReader(); Document doc =reader.read("src/Book.xml"); Element root = doc.getRootElement(); treeWalk(root); } private static void treeWalk(Element root) { System.out.println(root.getName());//显示标签名称// System.out.println(root.getText());//显示标签名称 //得到所有的子节点 //root.nodeCount()得到子节点的个数 for(int i=0;i<root.nodeCount();i++) { Node node = root.node(i); //根据下标得到一个节点对象 //判断节点类型是不是标签类型 if(node instanceof Element) { treeWalk((Element)node); } } }
下面我们看一下Xpath解析xml方式,也是感觉比较好用的方式
Xpath的解析方式可以直接获得各个节点
特别是我们在selectNodes方法的时候可以使用各种规则,关于这些规则去网上找吧
这里还需要导入jaxen包
public static void main(String[] args) throws DocumentException { //得到第二本书的书名// SAXReader reader = new SAXReader();// Document doc = reader.read("src/Book.xml");// // Node node = doc.selectSingleNode("/书架/书[2]/书名");// // System.out.println(node.getText()); //遍历得到所哟标签 SAXReader reader = new SAXReader(); Document doc = reader.read("src/Book.xml"); List<Node> list = doc.selectNodes("//*"); //这里是获得任意节点// for(int i=0;i<list.size();i++)// {// Node node = (Node) list.get(i);// System.out.println(node.getName());// } for(Node node:list){ System.out.println(node.getName()); } }
1 0
- XML解析
- xml解析
- XML解析
- 解析XML
- xml解析
- 解析xml
- 解析xml
- xml解析
- XML解析
- xml解析
- XML解析
- xml解析
- xml解析
- xml解析
- xml解析
- xml解析
- 解析xml
- XML解析
- children与childNodes的区别
- 建议119:不要使用自己的加密算法
- FMS 安装测试 自己进行
- 2016/9/7课上作业
- Idea中的快捷键
- XML解析
- 设计模式学习之路-观察者模式
- android通过shape实现虚线效果
- 新学年计划(9月-12月)
- jquery轮播特效(左右轮播)
- 判断当前设备是手机还是平板
- 第11章总结
- unity android设备上查看log输出
- 事件(2)——事件处理程序