Dom4j解析XML应用总结
来源:互联网 发布:循环冗余检查 数据丢失 编辑:程序博客网 时间:2024/03/29 09:42
一.最常用到的API
1.getRootElement():隶属于Document类,返回XML文档的根元素
setRootElement(Element rootElement) :设置给定元素为相应文档的根元素
2.asXML():隶属于Node类,用于将XML转换为String
3.DocumentHelper类常用API:
createDocument():创建一个Document对象
parseText(String text):解析给定Xml的文本,生成Document对象。
3.Element类中常用到API
attributeValue(String name) :获取元素String值。
elementIterator() :返回元素的所有子元素的Iterator迭代器。
elements() :返回元素包含所有子元素List。
getParent() :获取父元素Element。
getPath() :获取自己的xpath。
detach() :移除自己。
getName() :获取节点的名称。
selectNodes(String xpathExpression) :通过XPATH获取节点。
selectSingleNode(String xpathExpression) :通过XPATH获取一个节点。
2.测试代码:
运行结果:
student
id:1 sex:female
name:zhangsan
address
home:zhengzhou
company:HIST
student
id:2 sex:male
name:wangwu
address
home:beijing
1.getRootElement():隶属于Document类,返回XML文档的根元素
setRootElement(Element rootElement) :设置给定元素为相应文档的根元素
2.asXML():隶属于Node类,用于将XML转换为String
3.DocumentHelper类常用API:
createDocument():创建一个Document对象
parseText(String text):解析给定Xml的文本,生成Document对象。
3.Element类中常用到API
attributeValue(String name) :获取元素String值。
elementIterator() :返回元素的所有子元素的Iterator迭代器。
elements() :返回元素包含所有子元素List。
getParent() :获取父元素Element。
getPath() :获取自己的xpath。
detach() :移除自己。
getName() :获取节点的名称。
selectNodes(String xpathExpression) :通过XPATH获取节点。
selectSingleNode(String xpathExpression) :通过XPATH获取一个节点。
getDocument() :作为一个Document返回。
二. 具体例子
1.XML文件内容:
<?xml version="1.0" encoding="utf-8"?><students> <student id="1" sex="female"> <name>zhangsan</name> <age>21</age> <address> <add code="home">zhengzhou</add> <add code="company">HIST</add> </address> </student> <student id="2" sex="male"> <name>wangwu</name> <age>16</age> <address> <add code="home">beijing</add> <add code="company">dongzhi</add> </address> </student></students>
2.测试代码:
public class ParseXmlExample { public void parseXmlDoc(String xmlFile){ SAXReader saxReader=new SAXReader(); Document doc=null; try { doc=saxReader.read(ParseXmlExample.class.getResourceAsStream(xmlFile)); } catch (DocumentException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } Element rootElement=doc.getRootElement(); for(Iterator iterator=rootElement.elementIterator();iterator.hasNext();){ Element e_stu=(Element)iterator.next(); String student=e_stu.getName(); String id=e_stu.attributeValue("id"); String sex=e_stu.attributeValue("sex"); String name=e_stu.element("name").getText(); Element address=e_stu.element("address"); StringBuilder sb=new StringBuilder(); sb.append(student+"\n"); sb.append("\t"+"id:"+id+"\t"+"sex:"+sex+"\n"); sb.append("\t"+"name:"+name+"\n"); sb.append("\t"+address.getName()+"\n"); for(Iterator ad=address.elementIterator();ad.hasNext();){ Element e_com=(Element)ad.next(); String code=e_com.attributeValue("code"); String value=e_com.getText(); sb.append("\t\t"+code+":"+value+"\n"); } System.out.println(sb.toString()); } } public static void main(String[] argv){ new ParseXmlExample().parseXmlDoc("students.xml"); }}
运行结果:
student
id:1 sex:female
name:zhangsan
address
home:zhengzhou
company:HIST
student
id:2 sex:male
name:wangwu
address
home:beijing
company:dongzhi
将一段符合xml标准的string转换成xml文档中的element对象(使用dom4j)
private static Element getElementFromString(String s) {SAXReader builder = new SAXReader();Document doc = null;Element element = null;try {doc = builder.read(new StringReader(s));} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}if (doc != null) {element = doc.getRootElement();}return element;}
- Dom4j解析XML应用总结
- Dom4J解析XML总结
- Dom4j解析xml总结
- dom4j解析xml操作总结
- Dom4j解析XML简单应用,XStream实现Java、XML转换
- XML学习总结-xml概念和dom4j解析技术-(一)
- 用DOM4J解析XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 解析xml之--DOM4J
- dom4j解析XML
- 使用 dom4j 解析 XML
- xml文件解析-DOM4J
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- dom4j解析xml方法
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 【XEN学习笔记】学习授权表(Grant Tables)
- 怎样判断ios app 第一次启动
- 黑马小日子--文件上传
- 黑马小日子--Servlet监听
- CS106B Lecture 23 Graph
- Dom4j解析XML应用总结
- 实现应用程序icon及UITabBar右上角带红圈中数字
- 进入开源虚拟机 XEN 的世界
- Ubuntu 12.04 下安装 Eclipse
- 统计输入中关键词出现的次数(二分查找实现)
- 黑马小日子--过滤器
- 个人申请开发者账号及IDP(iOS Developer Program)注册小计
- 在线广告的exploration/exploitation trade-off(勘探和开采问题)
- easyUI EasyLoader