Java解析XML文件的四种方式之DOM4J解析
2014-06-30 15:05
211 查看
package com.xyls.xml; import java.io.*; import java.net.URI; import java.util.*; import org.dom4j.*; import org.dom4j.io.*; /*需要把dom4j-1.6.1.jar包放到D:\Java\jdk1.7.0_09\jre\lib\ext中去 * 性能优异,功能强大,具有易用性 * Hibernate和Spring框架中都使用了DOM4J的解析操作 * 主要接口: * Attribute属性操作 * Branch能够包含子节点的节点,定义一个公共的行为 * CDATA定义了XML CDATA区域 * CharacterData标识接口,基于字符的节点,如CDATA、Comment、Text * Comment定义了XML的注释 * Document定义了XML文档 * Element定义了XML元素 * Text定义了xml文本节点 * 操作步骤与JDOM类似 * DOM4J本身还是需要使用SAX建立解析器 * 总结:DOM和SAX是基础,重点掌握就行 * */ public class DOM4JTest{ public void generateDocument(){//该方法生成一个新的xml文档 //使用DocumentHelper类创建一个文档实例,DocumentHelper是生成 XML 文档节点的 dom4j API 工厂类。 Document doc = DocumentHelper.createDocument(); //创建根元素 Element root = doc.addElement("catalog"); //添加一个注释 root.addComment("An XML Catalog"); //添加一个处理指令 root.addProcessingInstruction("target","text"); //添加一个元素 Element journal = root.addElement("journal"); //为journal元素增加两个属性title、publisher journal.addAttribute("title","xml zone"); journal.addAttribute("publisher","IBM developerWorks"); //向journal中添加子元素 Element article = journal.addElement("article"); //为article元素增加两个属性level、date article.addAttribute("level","Intermediate"); article.addAttribute("date","December-2001"); //向article元素中添加子元素 Element title = article.addElement("title"); //为title元素设置文本 title.setText("Java configuration with XML Schema");//方法从Node继续来的 //向article元素中添加子元素 Element author = article.addElement("author");//方法从Branch继承而来 //向author元素中添加子元素 Element firstname = author.addElement("firstname"); //设置文本 firstname.setText("Marcello"); //向author元素中添加子元素 Element lastname = author.addElement("lastname"); //设置文本 lastname.setText("Vitaletti"); //为文档添加类型说明 doc.addDocType("catalog", null, null); //输出xml文件 try{ XMLWriter output = new XMLWriter(new FileWriter(new File("d:"+File.separator+"test"+File.separator+"catalog.xml"))); output.write(doc); output.close(); }catch(Exception e){ e.printStackTrace(); } } //还需要把jaxen-1.1-beta-6.jar放到D:\Java\jdk1.7.0_09\jre\lib\ext中去 public void parserXML(File inputXml){ try{ //使用 SAXReader解析XML文档, SAXReader 包含在 org.dom4j.io 包中 SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(inputXml); //inputXml 是从 D:/TEST/catalog.xml //使用 XPath 表达式从 article 元素中获得level属性节点列表。 //如果 level 属性值是Intermediate则改为“111111111”。 List list = doc.selectNodes("//article/@level" ); Iterator iter=list.iterator(); while(iter.hasNext()){ Attribute attribute=(Attribute)iter.next(); if(attribute.getValue().equals("Intermediate")) attribute.setValue("111111111"); } //使用 XPath 表达式从 article 元素中获得date属性节点列表。 list = doc.selectNodes("//article/@date" ); iter=list.iterator(); while(iter.hasNext()){ Attribute attribute=(Attribute)iter.next(); if(attribute.getValue().equals("December-2001")) attribute.setValue("22222222"); } //获取 article 元素列表,从 article 元素中的 title 元素得到一个迭代器,并修改 title 元素的文本。 list = doc.selectNodes("//article" ); iter=list.iterator(); while(iter.hasNext()){ Element element=(Element)iter.next(); Iterator iterator=element.elementIterator("title"); while(iterator.hasNext()){ Element titleElement=(Element)iterator.next(); if(titleElement.getText().equals("Java configuration with XMLSchema")) titleElement.setText("aaaaaaaaaaaaaaaaa"); } } //从 article 元素中的 author 元素节点列表 list = doc.selectNodes("//article/author" ); iter=list.iterator(); while(iter.hasNext()){ Element element=(Element)iter.next(); Iterator iterator=element.elementIterator("firstname"); while(iterator.hasNext()){ Element firstNameElement=(Element)iterator.next(); if(firstNameElement.getText().equals("Marcello")) firstNameElement.setText("bbbbbbb"); } } //从 article 元素中的 author 元素节点列表 list = doc.selectNodes("//article/author" ); iter=list.iterator(); while(iter.hasNext()){ Element element=(Element)iter.next(); Iterator iterator=element.elementIterator("lastname"); while(iterator.hasNext()){ Element lastNameElement=(Element)iterator.next(); if(lastNameElement.getText().equals("Vitaletti")) lastNameElement.setText("cccccccccccc"); } } OutputFormat format = OutputFormat.createPrettyPrint();//设置输出格式 format.setEncoding("GBK"); XMLWriter output = new XMLWriter(new FileOutputStream(new File("d:"+ File.separator+"test"+File.separator+"catalog_modified.xml")),format);//输出文件 output.write(doc);//输出内容 output.close(); }catch(DocumentException e){ System.out.println(e.getMessage()); }catch(IOException e){ System.out.println(e.getMessage()); } } public static void main(String args[])throws Exception{ DOM4JTest dj = new DOM4JTest(); //dj.generateDocument(); File f = new File("D:"+File.separator+"test"+File.separator+"catalog.xml"); dj.parserXML(f); } }
相关文章推荐
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式
- Java解析XML文件的四种方式之JDOM解析
- java解析xml文件四种方式
- Java解析XML文件的四种方式之DOM解析
- JAVA解析XML文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式 范例
- java解析xml文件四种方式
- Java解析xml文件四种方式
- java解析xml文件四种方式
- java解析xml文件四种方式
- Java解析xml文件四种方式
- java解析xml文件四种方式
- Java解析XML文件的四种方式之SAX解析