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 DocumentExceptionfile:用于指定要解析的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对象
- JSP操作XML
- JSP操作XML
- JSP 对 XML 的操作
- JSP 对 XML 的操作
- jsp程序设计:JDOM操作xml
- JSP中对XML操作基本范例
- 操作XML
- XML操作
- xml操作
- 操作XML
- xml 操作
- XML操作
- xml操作
- xml操作
- 操作XML
- XML 操作
- 操作XML
- XML操作
- 项目提示 Cannot change version of project facet Dynamic Web Module to 2.5 错误
- 204Count Primes
- mac上命令行的快捷键和vim的快捷键
- 文件的上传+下载+表单的重复提交问题 +自定义拦截器:
- 在hive中虚构dual表
- JSP操作XML
- 蚊式噪声
- leetcode hard模式专杀之51. N-Queens
- socklen_t在windows和linux平台下的头文件定义
- 灵云TTS(语音合成)
- 阿里云服务器部署方案(nginx+tomcat+mysql)
- 关键词标记
- 【android】Gif合成
- 18105 银行的叫号顺序