JSP操作XML

来源:互联网 发布:手机mac地址是什么 编辑:程序博客网 时间:2024/06/06 18:06

XML用于提供数据描述形式,适用于不同的应用程序间的数据交换,而且这种数据交换不以预先定义的一组数据结构为前提,增强了扩展性

使用dom4j操作XML文档

   dom4j采用了Java集合框架并完全支持DOM,SAX,JAXP,是一种Java XML解析器。

一,配置

下载dom4j组件,下载地址:点击打开链接

将解压后得到的dom4j-1.6.1jar和 lib目录下的jaxen-1.1-beta-6.jar配置到构建路径或复制到应用项目的lib文件夹下。

二,基本

1.创建XML文档对象

(1) DocumentHelper类的createDocument()方法

    Document document=DocumentHelper.createDocument();

(2)DoucumentFactory对象可以创建一个XML文档对象。

      DocumentFactory df=DocuemntFactroy.getInstance();      Document d=df.createDocument();

DocumentFactory和DocumnetHelper两个类都保存在org.dom4j包中

2.创建根节点

为XML文档创建根节点,首先创建一个普通节点,然后调用Document对象的setRootElement()方法将该节点设为根节点。

创建普通节点的方法:(DocumentHelper对象的方法)

public static Element createElement(String name)

    name:用于指定要创建的节点名

将普通节点设为根节点的方法:(Document对象的方法)

public void setRootElement(Element rootElement)

  rootElement:用于指定要作为根节点的普通节点

3.添加注释

通过dom4j组件的Element对象的addComment()方法为指定的节点添加注释

public Element addComment(String comment)
    comment:用于指定注释内容

4.添加属性

通过dom4j组件的Element对象的addAttribute()方法为指定的节点添加属性

public Element addAttribute(String name,String value)
  name:指定属性名

  value:指定属性值

5.创建子节点

通过dom4j组件的Element对象的addElement()方法为指定的节点添加子节点

public Element addElement(String comment)
   name:用于指定子节点的名称

addElement方法继承于org.dom4j.Branch接口

6. 设置结点内容

  (1)将节点内容设为普通文本

       通过dom4j组件的Element对象的setText()方法为指定的节点设置内容

 public void setText(String text)

      setText方法继承于org.dom4j.Node接口

      text:用于指定节点内容

(2)将CDATA作为节点内容

     通过dom4j组件的Element对象的addCDATA()方法为指定的节点设置内容

public Element addCDAATA(String cdata

    cdata:用于指定CDATA字段的文本内容

7.设置编码

默认编码集为UTF-8,   通过dom4j组件的OutputFormat对象的setEncoding()方法设置文档的编码集

public void setEncoding(String encoding)
    encoding:用于指定编码集;常用的编码集:GBK或GB2312(简体中文),BIG5(繁体中文),ISO-8859-1(西欧字符),UTF-8通用的国际编码

9.设置输出格式:

生成的XML文件默认紧凑排版,可以将输出格式设置为缩进方式。

   通过dom4j组件的OutputFormat对象的createPrettyPrint()方法设置文档的输出格式

public stati OutputFormat createPrettyPrint()

10.输出XML文档

(1)未设置输出格式

  使用XMLWriter类的构造方法XMLWriter(Writer writer)实例化一个XMLWriter对象,在利用该对象的write()方法写入数据。最后关闭XMLWriter对象

代码示例:将一个节点document写入到一个XML文件中

String url=request.getRealPath("/xml/pl.xml");XMLWriter writer=new XLWriter(new FileWriter(url));writer.write(document);writer.close();

(2)设置了输出格式或编码集

使用XMLWriter(Writer writer,OutputFormat format)实例化一个XMLWriter对象,在利用该对象的write()方法写入数据。最后关闭XMLWriter对象

OutputFormat format=new OutputFormat();format.setEncoding("GBK");String url=request.getRealPath("/xml/pl.xml");XMLWriter writer=new XLWriter(new FileWriter(url));writer.write(document);writer.close();

不输入到XML文件中,输出到浏览器或控制台上:

控制台:

XMLWriter writer=new XLWriter(System.out,format);writer.write(document);

不能调用XMLWriter的close()方法

浏览器:

XMLWriter writer=new XLWriter(out,format);writer.write(document);
out为java.io.PrintWriter对象(可以通过response.getWrite()方法获得),out也可以是JSP的内置对象

三,解析

1.解析XML文档

在解析前,需要构建要解析的XML文件对应的XML文档对象。步骤:首先创建SAXReader对象(实例化),调用该对象的read()方法获取对应的XML文档对象

public Document read(File file) throws DocumentException
    file:用于指定要解析的XML文件

SAXReader类位于org.dom4j.io包中

2.获取根节点

通过dom4j组件的Document对象的getRootElement()方法返回指定XML文档的根节点

public Element getRootElement()

     返回值:Element对象

3.获取子节点

(1)element()方法

用于获取指定名称的第一个节点(通常用于获取根节点中节点名唯一的一个子节点)

public Element element(String name)

     name:用于指定要获取的节点名

(2)elements()

用于获取指定名称的全部节点(通常用户获取根节点中多个并列具有相同名称的子节点)

public List elements(String name)

      name:用于指定要获取的节点名

3.修改XML文档

在修改前,首先要查询到该节点

通过dom4j组件的Element对象的selectStringNode()方法或selectNodes()方法查询

(1)selectStringNode用于获取符合指定条件的唯一节点:

public Node selectStringNode(String xpathExpression)

       xpathExpression:XPath表达式

(2)selectNodes用于获取符合指定条件的节点列表

public List selectNodes(String xpathExpression)

      xpathExpression:XPath表达式

XPath表达式使用反斜杠“/”隔开节点树的父结点,从而构成代表节点位置的路径。使用反斜杠“/开头,代表使用绝对路径,否则代表相对路径

使用属性,在属性名前加上“@”符号

4.删除节点

先查询(使用electStringNode()方法或selectNodes()方法查询),获得要删除的结点,利用Element的remove()方法删除节点

public boolean remove(Element element) 

     element:Element对象


原创粉丝点击