小白自学Android路之 xml文件的Dom4j解析编程

相对于前面的dom方式来解析xml文件,dom4j在它的基础上进行了很大程度上的修改,比以往显得更简洁,而且最大的优势在于添加了XPath编程,更加方便查询。

     1.Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。

2. DOM4j中,获得Document对象的方式有三种:
首先:读取XML文件,获得document对象            
SAXReader reader = new SAXReader();
Document   document = reader.read(new File( "input.xml“ ));
l
其次:解析XML形式的文本,得到document对象.
String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
最后:主动创建空document对象.
 Document document = DocumentHelper.createDocument();
             //创建根节点
Element root = document.addElement( "members");
3 .元素Element的操作
//获取文档的元素.
   Element root = document.getRootElement();
//获取某个元素的指定名称的第一个子节点.
Element element = element.element(“书名");
//获取某个元素的指定名称的所有子元素的集合
  List list = element.elements(“书名”);
//添加一个指定名称的子元素
   Element childEle = parentEle.addElement(“书名”);
//删除某个元素指定的子元素
parentEle.remove(childEle);
//获取某个元素的指定名称的属性对象
      Attribute attr = element.attribute(“id”);
//获取某个元素的指定名称的属性值
 String id = element.attributeValue(“id”);
//给元素添加属性或更新其值
      Attribute attr = element.addAttribute(“id”,”123”);
//删除某个元素的指定属性
      element.remove(attribute);
//获取某个元素的文本内容
      String text = element.getText();
//给某个元素添加或更新文本内容
 element.setText(“Tom”);

 4.将文档写入xml
XMLWriter writer = new XMLWriter(new  FileWriter("output.xml"));
  writer.write(document);
  writer.close();

5.xpath编程
   一些基本的语法,在XPath文档里面全部都能找,而且都是以例子的形式讲述的。使用XPath需要注意:
XPath 是在 XML 文档中查找信息的语言
XPath 是通过元素和属性进行查找
XPath简化了Dom4j查找节点的过程
使用XPath必须导入jaxen-1.1-beta-6.jar否则出现NoClassDefFoundError: org/jaxen/JaxenException。

6.xpath中查询节点
获取所有符合条件的节点
document.selectNodes(String xpathExpression)
返回List集合
获取符合条件的单个节点
document.selectSingleNode(String xpathExpression)
返回一个Node对象。
如果符合条件的节点有多个,那么返回第一个

      7.例子代码
<书架>
	<书 书名="Java就业培训教程">
		<作者>张孝祥</作者>
		<售价>39.00元</售价>
	</书>
	<书 书名="JavaScript网页开发">
		<作者>张孝祥</作者>
		<售价>28.00元</售价>
	</书>
</书架>

  业务需求:
         *测试读取 查看《JavaScript网页开发》的售价
* 测试添加节点 <书 书名="Java邮件开发"> <作者>张孝祥</作者> <售价>18.00元</售价> </书>

@Test 
	public void testQueryByName() throws Exception  {
		//获得文档
		SAXReader reader = new SAXReader();
		Document document =  reader.read(new File(FILEPATH));
		
		String xPath = "//书[@书名='JavaScript网页开发']";
		Element bookEle = (Element) document.selectSingleNode(xPath);
		
		if(bookEle!=null) {
			System.out.println("售价 = " + bookEle.element("售价").getText());
			return;
		}
		System.out.println("没有寻找到!");
	}
	
@Test
	public void testCreateEle() throws Exception {
		//测试添加节点 <书 书名="Java邮件开发"> <作者>张孝祥</作者> <售价>18.00元</售价> </书> 
		SAXReader reader = new SAXReader();
		Document document =  reader.read(new File(FILEPATH));
		Element rootElement = document.getRootElement();
		
		Element bookEle = rootElement.addElement("书");
		bookEle.addAttribute("书名", "Java邮件开发");
		Element authoreEle = bookEle.addElement("作者");
		authoreEle.addText("张孝祥");
		
		Element priceEle = bookEle.addElement("售价");
		priceEle.addText("18.00元");
		
		//同步xml文本
		OutputStream out = new FileOutputStream(new File(FILEPATH));
		OutputFormat format = OutputFormat.createCompactFormat();
		XMLWriter xmlWriter = new XMLWriter(out, format);
		xmlWriter.write(document);
		
		System.out.println("添加成功!");
	}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值