java 读写xml dom4j

java里经常会碰到解析xml的需求,除了官方的dom和sax解析,还有第三方提供的对xml的解析,比如dom4j,这里就写个简单的demo


1.解析xml

/**
	 * @Desc:遍历和取确定的标签值/属性
	 * @param xmlFilePath 读取的xml文件路径
	 */
	public void showXMLResult(String xmlFilePath){
		Element root = getRootElement(xmlFilePath);
		List<Element> childElements = root.elements(); // book标签
		for (Element child : childElements) {
			// 已知属性名情况下
			System.out.println("id: " + child.attributeValue("id"));

			String tid = child.element("title").attributeValue("tid");
			System.out.println("tid:" + tid);
			// 已知子元素名的情况下
			System.out.println("title" + child.elementText("title"));
			System.out.println("author" + child.elementText("author"));
			// 这行是为了格式化美观而存在
			System.out.println();
		}
	}
	
	/**
	 * @Desc: 根据文件路径,获取根元素
	 * @param filePath 文件路径
	 * @return         xml根元素
	 */
	public Element getRootElement(String filePath){
		SAXReader reader = new SAXReader();
		File file = new File(filePath);
		try {
			return reader.read(file).getRootElement();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return null;
	}

读取的xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<books> 
   <book id="001" b="b2"> 
      <title tid="001_01">Harry Potter</title> 
      <author>J K. Rowling</author> 
   </book> 
   <book id="002"> 
      <title>Learning XML</title> 
      <author>Erik T. Ray</author> 
   </book> 
</books>



2.生成xml

/**
	 * @Desc: 生成demo到指定路径
	 * @param targetPath 输出目录
	 */
	public void writeXML(String targetPath) {
		Document doc = DocumentHelper.createDocument();
		// 增加根节点
		Element books = doc.addElement("books");
		// 增加子元素
		Element book1 = books.addElement("book");
		Element title1 = book1.addElement("title");
		Element author1 = book1.addElement("author");

		Element book2 = books.addElement("book");
		Element title2 = book2.addElement("title");
		Element author2 = book2.addElement("author");

		// 为子节点添加属性
		book1.addAttribute("id", "001");
		// 为元素添加内容
		title1.setText("Harry Potter");
		author1.setText("J K. Rowling");

		book2.addAttribute("id", "002");
		title2.setText("Learning XML");
		author2.setText("Erik T. Ray");

		// 实例化输出格式对象
		OutputFormat format = OutputFormat.createPrettyPrint();
		// 设置输出编码
		format.setEncoding("UTF-8");
		// 创建需要写入的File对象
		File file = new File(targetPath + File.separator + "books.xml");
		// 生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式
		XMLWriter writer;
		try {
			writer = new XMLWriter(new FileOutputStream(file), format);
			// 开始写入,write方法中包含上面创建的Document对象
			writer.write(doc);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


tips:

dom4j真的非常强大,解析和生成xml,只需要dom4j.jar这一个jar包!!!

附jar的下载,戳我

你可能感兴趣的:(java 读写xml dom4j)