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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 掌上品的钱怎么办 财务纠纷被起诉怎么办 牙齿补后疼痛怎么办 牙齿表面蛀了怎么办 虫牙全掉了怎么办 牙齿蛀光了怎么办 虫牙全部掉完了怎么办 不喜欢向人请教怎么办 单位不交公积金怎么办 电锯链条掉了怎么办 天津公积金怎么办外地转入 学籍档案涂抹了怎么办 气相点火失败怎么办 小米闹钟声音小怎么办 河北省监理员证怎么办 买的商铺烂尾了怎么办 钢表带被磨花了怎么办 资料员到期了怎么办 八大员挂靠社保怎么办 安许证三类人员不足了怎么办 考试准考证号写错了怎么办 科目一失约两次怎么办 钢筋送检两次不合格怎么办 公路原材料抽检不合格怎么办 混凝土回弹强度不合格怎么办 毕业证照片太丑怎么办 政审时找不到档案怎么办 劳动解除书开不出来怎么办 双流办健康证怎么办 户口本人数满了怎么办 二建有效期到了怎么办 二级建造师到期怎么办 网上选车牌号后怎么办 政府拖欠水利工程款怎么办 重庆造价员到期了怎么办 枕大神经发炎怎么办 塑钢推拉窗下沉怎么办 网上买东西数量不够怎么办 淘宝买东西数量不够怎么办 康佳遥控器坏了怎么办 电视机频幕脏了怎么办