dom4j基础

来源:互联网 发布:淘宝大红包 编辑:程序博客网 时间:2024/05/19 21:01

dom4j的配置

需要引入的jar包:

  • dom4j-1.6.1.jar
  • jaxen-1.1-beta-6.jar

创建XML文档

1、创建XMl文档对象

Document document = DocumentHelper.createDocument();

或者

DocumentFactory documentFactory = DocumentFactory.getInstance();Document document = documentFactory.createDocument();

2、创建根节点

//DocumentHelper的createElement()创建普通节点public static Element createElement(String name);//name:节点名//Document的setRootElement()设为根节点public void setRootElement(Element rootElement);

3、添加注释

public Element addComment(String comment);//comment:注释内容

4、添加属性

public Element addAttribute(String name,String value);//属性名,属性值 

5、创建子节点

//Element的addElement()创建子节点public Element addElement(String name);//子节点名

6、设置节点内容
将节点内容设置为普通文本:

//Element的setText()设置文本内容public void setText(String text);

将CDATA段作为节点内容:

//Element的addCDATA()设置CDATA中的文本内容public Element addCDATA(String cdata);

7、设置编码
默认编码为UTF-8

//OutputFormat的setEncoding()设置文档编码集public void setEncoding(String encoding);

8、设置输出格式

//OutputFormat的createPrettyPrint()设置文档缩进public static OutputFormat createPrettyPrint();

9、输出xml文档,两种方式:
未设置输出格式时,用XMLWriter的构造方法XMLWriter(Writer writer):

String fileURL = request.getRealPath("/xml/placard.xml");XMlWriter writer = new XMLWriter(new FileWriter(fileURL));//实例化XMLWriterwriter.write(document);//向流写入数据writer.close();//关闭XMLWriter

已设置输出格式或编码集,用XMLWriter的构造方法XMLWriter(Writer writer,OutputFormat format):

OutputFormat format = new OutputFormat();format.setEncoding("GBK");String fileURL = request.getRealPath("/xml/placard.xml");XMlWriter writer = new XMLWriter(new FileWriter(fileURL),format);writer.write(document);//向流写入数据writer.close();

也可以输出到浏览器或控制台:

//输出到控制台XMLWriter writer = new XMLWriter(System.out,format);writer.write(document);//不能调用close()//输出到浏览器//out为java.io.PrintWriter对象,可通过response.getWriter()获取,也可以是JSP内置对象。XMLWriter writer = new XMLWriter(out,format);writer.write(document);

解析XML文档

1、构建XMl文档对象

//SAXReader的read()获取XML文档对象public Document read(File file) throws DocumentException

2、获取根节点

public Element getRootElement()

3、获取子节点

//Element的element()或elements()来获取//获取指定名称的第一个节点public Element element(String name);//获取指定名称全部节点 public List elements(String name);

修改XML文档

1、修改节点
首先需要查询到该节点:

//Element的selectSingleNode()获取符合条件的唯一节点public Node selectSingleNode(String xpathExpression);//xpathExpression:XPath表达式,使用反斜杠"/"隔开节点树中的父子节点,构成代表节点位置的路径。如果以"/"开头,表示绝对路径,否则相对路径。如果使用属性,则在属性名前加上"@"。//返回Id为1的info节点/placard/info/[@id='1']//获取根节点placard的Id属性为1的子节点infoorg.dom4j.Node item = placard.selectSingleNode("/placard/info/[@id='1']");//Element的selectNodes()获取符合条件的节点列表public List selectNodes(String xpathExpression);

2、删除节点
先查询到要删除的节点,然后使用Element的remove():

public boolean remove(Element element);

例:

//删除指定节点Element element = (Element)placard.selectSingleNode("/placard/info/[@id='1']");if(null != element){    placard.remove(element);}//批量删除节点document.getRootElement().elements("info").clear();
原创粉丝点击