Dom4j解析文档

来源:互联网 发布:perl json is needed 编辑:程序博客网 时间:2024/06/06 03:30

1、Dom4j解析文档

     特点:Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM开发的。与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。

优点:Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。

2、DOM4j中,获得Document对象的方式有三种:

       1.读取XML文件,获得document对象           

         SAXReader reader = new SAXReader();
              Document   document = reader.read(new File("input.xml"));

       2.解析XML形式的文本,得到document对象.

            String text = "<members></members>";
              Document document = DocumentHelper.parseText(text);

       3.主动创建document对象.

          Document document = DocumentHelper.createDocument();
             //创建根节点

       Element root = document.addElement("members");

3、一下代码是dom4J对xml文档的增删改查

       //遍历所有节点

    public static void listNodes(Element elememt){

       //org.dom4j.Element root = doc.getRootElement();

       //返回的是一个迭代器,把根节点下的所有子字节的元素都获取到,并放到迭代器里

       Iterator it = elememt.elementIterator();

       while(it.hasNext()){

           Element sun = (Element) it.next();

           System.out.println("这是一个节点:"+sun.getName());

           listNodes(sun);

       }

    }

   

    //遍历属性节点

    public static void listElementAttribute(Element element){

       System.out.println(element.attributeCount());

       for(Iterator it = element.attributeIterator();it.hasNext();){

           Attribute att = (Attribute) it.next();//强制类型装换

           System.out.println(att.getName()+"    "+att.getText()+"   "+att.getNodeTypeName());

       }

    }

   

    //添加一个元素

    public static void createElement(Document doc)throws Exception, FileNotFoundException{

       //找到需要添加节点的位置,寻找根

       Element root = doc.getRootElement();

       Element parent = root.addElement("书");

       //添加节点

       Element element = parent.addElement("出版社");

      

       element.addText("清华大学出版");///添加内容

       element.addAttribute("级别", "一级出版社");//添加属性

       //把内存中的语句写入到文档中

       //构建字符输出流

       OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("src/Book.xml"),"utf-8");

       XMLWriter xmlWriter = new XMLWriter();

       xmlWriter.write(doc);

       xmlWriter.close();

       //writer.write(comment)

      

    }

public static void deleteElement(Document doc) throws Exception, FileNotFoundException{

       //找到需要添加节点的位置,寻找根

       Element root = doc.getRootElement();

       Element parent = root.addElement("书");

       //删除节点

       Element element = parent.element("作者");

       parent.remove(element);

      

      

       //修改元素节点的内容

       Element price = parent.element("售价");

       price.setText("50");

      

       //删除某一个元素节点的属性

       Element publish = parent.element("出版社");

       Attribute att = publish.attribute("级别");

       publish.remove(att);

      

      

      

      

       //把内存中的语句写入到文档中

       //构建字符输出流

       OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("src/Book.xml"),"utf-8");

       XMLWriter xmlWriter = new XMLWriter();

       xmlWriter.write(doc);

       xmlWriter.close();

       //writer.write(comment)

      

    }

介绍Scheam

       是一种用于定义和描述xml文档的模式文档(约束文档),遵循这个文档书学写的xml文档成为实例文档,他的出现是为了克服dtd的约束,他能支持更多的数据类型,并支持用户自定义新的数据类型,他有字符串类型,日期类型。

XML Schema 和 DTD的不同:

•             XML Schema符合XML语法结构。

•         DOM、SAX等XML API很容易解析出XML Schema文档中的内容。

•         XML Schema对名称空间支持得非常好。

•         XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。

•         XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。

•         XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。 

Scheam的了解:

l       XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd。

l       一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档

l       和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为Schema。

l       编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

Schema对命名空间是支持非常好的

名称空间是为了解除名称的冲突---------加上前缀------09级java:张三

名称空间的使用

Xml文档中标签

                     <h:姓名></h:姓名>

                     <f:姓名></f: 姓名>

Schema的约束能力非常大,,可记性对属性非常细致的操作

Schema约束的快速入门

       Schema本身就是xml的文件,扩展名为xsd

       Schema的文档通常成为模式文档,遵循这个文档书写的xml文档成为实例文档

       Schema文档必须有一个根结点

              Schema:book.xsd     uri地址:把定义好的文档绑定到http://www.csdn..com网站上,是我们随便起的名字

              Schema:book.xsd

                    

              Schema:book.xsd      http://www.csdn..com   前缀为book

              Xml文档

                     <book:书架></book:书架>   指定书架去遵循绑定的约束 

book代表的是http://www.csdn..com

原创粉丝点击