java dom4j处理xml添加document删除document

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(1748)   2023-03-28 11:29:14
java dom4j处理xml添加document删除document
package org.xqlee.utils.xml;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
 * 
 * 
 * <pre>
 * _________________________INFO_____________________________
 * | Description : [dom4j处理xml] 
 * | Encoding    : [UTF-8]
 * | Package     : [org.xqlee.utils.xml.test]
 * | Project     : [utils]
 * | Author      : [LXQ]
 * | CreateDate  : [2016年3月23日上午11:14:35]
 * | Updater     : []
 * | UpdateDate  : []
 * | UpdateRemark: []
 * | Company     : [www.zhljc.com]
 * | Version     : [v 1.0]
 * | Libs        : [dom4j-1.6.1.jar xml-apis-1.0b2.jar jaxen-1.1.6.jar]
 * __________________________________________________________
 * </pre>
 */
public class Dom4j {

	public static void main(String[] params) {
		System.out.println("=====1.开始生产xml=====");
		String xml = createXML();
		System.out.println("=====2.结束生产xml=====");
		System.out.println("=====3.第一次解析=====");
		String2XML(xml);
		System.out.println("=====4.第二次解析");
		xml=" "+xml;//注意xml文档的<?xml version="1.0" encoding="GBK"?>前面不允许有其他值
		String2XML(xml);
		
	}

	/**
	 * 创建xml
	 * 
	 * @return xml文档字符串
	 */
	public static String createXML() {
		System.out.println("============xml创建===============");
		// 1.创建文档
		Document doc = DocumentHelper.createDocument();
		// 设置文件编码格式
		doc.setXMLEncoding("GBK");
		// 2.文档中添加节点||注意文档中只能有一个root节点
		Element root = doc.addElement("ROOT");
		root.addAttribute("root", "http://www.zhljc.com");
		// 头部
		Element header = root.addElement("HEADER");
		header.addAttribute("header", "http://zhljc.com");

		header.addElement("HPARAM1").addText("Header param 1");
		header.addElement("HPARAM2").addText("Header param 2");
		// fields
		Element f1 = header.addElement("field");
		f1.addAttribute("name", "F1");
		f1.addText("0000f2");

		Element f2 = header.addElement("field");
		f2.addAttribute("name", "F2");
		f2.addText("0000f2");

		Element f3 = header.addElement("field");
		f3.addAttribute("name", "F3");
		f3.addText("0000f3");

		// body
		Element body = root.addElement("BODY");
		body.addAttribute("body", "http://www.zhljc.com");

		body.addElement("BPARAM1").addText("Body param 1");
		body.addElement("BPARAM2").addText("Body param 2");

		// 3.转换为字符集的xml
		String xml = doc.asXML();
		System.out.println("xml1:\n" + xml);
		return xml;

	}

	/**
	 * 解析xml
	 * 
	 * @param xml
	 *            字符串的xml参数
	 */
	public static void String2XML(String xml) {
		System.out.println("============xml解析===============");
		try {
			// 转换
			Document doc = DocumentHelper.parseText(xml);
			// 获取节点内容
			String headerParam1Text = doc.selectSingleNode("/ROOT/HEADER/HPARAM1").getText();
			System.out.println("节点ROOT->HEADER->HPARAM1的值为:" + headerParam1Text);

			@SuppressWarnings("unchecked")
			List<Element> ns = doc.selectNodes("/ROOT/HEADER/field");
			System.out.println("通过属性名称查询节点TEXT值:"+getTextByAttribute(ns,"name","F1"));

		} catch (DocumentException e) {
			System.out.println("转换异常:" + e.getMessage());
			e.printStackTrace();
		}
	}
	
	public static String getTextByAttribute(List<Element> nodes, String attributeName, String attributeValue) {
		for (Element node : nodes) {
			if (node.attributeValue(attributeName).equals(attributeValue)) {
				return node.getText();
			}
		}
		return null;
	}

}

标签:
地址:https://www.leftso.com/article/9.html

相关阅读

简介       Apache Log4j2是对Log4j 1.x的升级,在性能上进行了重大改进,改进了配置文件的自动重装,Java 8 lambda支持和自定义日志级别,从而对Log4j 1....
eclipse中xml文件警告信息No grammar constraints (DTD or XML Schema) referenced in the document.通用解决
log4j使用,log4j框架在java编程中还是比较常见的,这里将会讲解通过log4j2的LevelRangeFilter将不同级别log存放不同文件中。
Java编程之Spring Boot 使用SLF4J Logging,spring boot,SLF4J
这个Log4j2示例将帮助您使用HTMLLayout配置log4j2.xml文件
Log4j 2 简介       Apache Log4j 2是对Log4j 1.x的升级,相对于其先前版本进行了重大改进,例如性能改进,自动重新加载已修改的配置文件,java 8 lambda...
ConsoleAppender概述       Log4j2 ConsoleAppender将应用程序生成的日志事件附加到System.out或System.err中
概述给定log4j2.xml是配置configure multiple appenders(例如控制台附加程序和文件附加程序)的参考
概述       Log4j2 RollingFileAppender是一个OutputStreamAppender,它遵循有关何时应进行滚动(备份)的已配置触发策略,将日志消息写入文件