`
天空之城
  • 浏览: 402761 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java常用工具类,拼接XML格式的字符串

    博客分类:
  • Java
 
阅读更多
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

/**
 * XML封装类
 * @author liupengchao
 * @version 1.0
 * @date 2012-06-18
 */	
public class XmlObject {
	
		private static String HEAD = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
		private String name;
		private Object value;
		private Map<String, Object> attributes;
		private List<XmlObject> subXmlObjects;

		/**
		 * 根据name构造XmlObject
		 * 
		 * @param name
		 *  生成xml时标签名,如name="html",则生成xml为<html/>
		 */
		public XmlObject(String name) {
			this.name = name;
		}

		/**
		 * 获得当前对象的名称
		 * 
		 * @return 返回当前对象的名称
		 */
		public String getName() {
			return name;
		}

		/**
		 * 设置当前对象的名称
		 * 
		 * @param name
		 *            给定名称
		 */
		public void setName(String name) {
			this.name = name;
		}

		/**
		 * 获得当前对象的值
		 * 
		 * @return 返回当前对象的值
		 */
		public Object getValue() {
			return value;
		}

		/**
		 * 设置当前对象的值
		 * 
		 * @param value
		 *            给定值
		 */
		public void setValue(Object value) {
			this.value = value;
		}

		/**
		 * 为当前XmlObject添加属性
		 * 
		 * @param name
		 *            属性名
		 * @param value
		 *            属性值
		 */
		public void addAttribute(String name, Object value) {
			if (attributes == null) {
				attributes = new LinkedHashMap<String, Object>();
			}
			if (name != null && !name.trim().equals("") && !name.equals(this.name)) {
				attributes.put(name, value);
			}
		}
		
		/**
		 * 为当前XmlObject添加属性
		 * 
		 * @param name
		 *            属性名
		 * @param value
		 *            属性值
		 */
		public void setAttribute(String name, Object value) {
			addAttribute(name, value);
		}

		/**
		 * 根据属性名称获得当前XmlObject对象的属性值
		 * 
		 * @param name
		 *            属性名称
		 * @return 属性值
		 */
		public Object getAttributeValue(String name) {
			return getAttributeValue(name, null);
		}

		/**
		 * 根据属性名称获得当前XmlObject对象的属性值
		 * 
		 * @param name
		 *            属性名称
		 * @param defaultValue
		 *            默认值
		 * @return 若属性存在,则返回属性值,否则返回默认值
		 */
		public Object getAttributeValue(String name, Object defaultValue) {
			Object value = attributes.get(name);
			return value == null ? defaultValue : value;
		}

		/**
		 * 为当前XmlObject对象添加子XmlObject对象
		 * 
		 * @param xmlObject
		 *            给定XmlObject对象
		 */
		public void addSubXmlObject(XmlObject xmlObject) {
			if (subXmlObjects == null) {
				subXmlObjects = new ArrayList<XmlObject>();
			}
			if (xmlObject != null) {
				subXmlObjects.add(xmlObject);
			}
		}
		
		public List<XmlObject> getSubXmlObjectsByName(String name) {
			List<XmlObject> xmlObjects = new ArrayList<XmlObject>();
			for (XmlObject temp: subXmlObjects) {
				if (temp.getName().equals(name)) {
					xmlObjects.add(temp);
				}
			}
			return xmlObjects;
		}
		
		public XmlObject getUniqueSubXmlObjectByName(String name) {
			for (XmlObject temp: subXmlObjects) {
				if (temp.getName().equals(name)) {
					return temp;
				}
			}
			return null;
		}

		/**
		 * 构造当前对象的压缩XML字符串
		 * 
		 * @return XML字符串
		 */
		public String toCompactXml() {
			return HEAD + getNoHeadXml("", "");
		}

		/**
		 * 根据格式化留白("\t")和默认的行分隔符("\t")构造当前对象的XML字符串
		 * 
		 * @return XML字符串
		 */
		public String toFormatXml() {
			return HEAD + getNoHeadXml("\t", "\n");
		}

		/**
		 * 根据格式化留白和默认的行分隔符构("\n")造当前对象的XML字符串
		 * 
		 * @param blank
		 *            格式化留白
		 * @return XML字符串
		 */
		public String toFormatXml(String blank) {
			return HEAD + getNoHeadXml(blank, "\n");
		}

		/**
		 * 根据格式化留白和行分隔符构造当前对象的无头的XML字符串
		 * 
		 * @param blank
		 *            格式化留白
		 * @param split
		 *            行分隔符
		 * @return 无头的XML字符串
		 */
		private String getNoHeadXml(String blank, String split) {
			return getNoHeadXml(blank, split, 0);
		}

		private String getNoHeadXml(String blank, String split, int count) {
			String blanks = "";
			for (int i = 0; i < count; i++) {
				blanks += blank;
			}
			StringBuffer sb = new StringBuffer();
			sb.append(count == 0 ? split : "");
			sb.append(blanks + "<" + name);
			if (attributes != null) {
				Set<Entry<String, Object>> set = attributes.entrySet();
				for (Entry<String, Object> entry : set) {
					String tempName = entry.getKey();
					Object tempValue = entry.getValue();
					if (tempName != null && tempValue != null) {
						sb.append(" " + tempName + "=\"" + tempValue + "\"");
					}
				}
			}
			if (subXmlObjects == null) {
				if (value == null) {
					sb.append("/>" + split);
				} else {
					sb.append(">");
					sb.append(value);
					sb.append("</" + name + ">" + split);
				}
			} else {
				sb.append(">" + split);
				Iterator<XmlObject> iterator = subXmlObjects.iterator();
				count += 1;
				while (iterator.hasNext()) {
					XmlObject xmlObject = iterator.next();
					sb.append(xmlObject.getNoHeadXml(blank, split, count));
				}
				sb.append(blanks + "</" + name + ">" + split);
			}
			return sb.toString();
		}
}

 

分享到:
评论

相关推荐

    Java常用工具类,字符串、日期、jdbc、xml解析等等

    下面我们将详细探讨这些工具类在字符串、日期、JDBC和XML解析等方面的使用。 1. **字符串工具**: - `String`类:Java中最基础的数据类型之一,提供了大量的静态方法用于字符串操作,如`concat()`, `substring()`,...

    Java常用工具类

    10. **XML处理:** `javax.xml.parsers.DocumentBuilderFactory` 和 `org.w3c.dom.Document` 可以用来解析XML文档,`javax.xml.transform.Transformer` 用于将DOM树转换为XML字符串。 以上只是部分常用的Java工具类...

    Java用xStream拼接xml

    有了配置好的xStream实例,你可以将Java对象转换为XML字符串: ```java Employee employee = new Employee("John", "Doe"); String xml = xstream.toXML(employee); System.out.println(xml); ``` 4. **反...

    ibatis 连接字符串 SqlMapConfig.xml

    标题中的“ibatis 连接字符串 SqlMapConfig.xml”指的是使用iBATIS(一个轻量级的Java持久层框架)时,配置数据库连接的关键文件——SqlMapConfig.xml。这个文件是iBATIS的核心配置文件,它包含了数据源、事务管理器...

    Java常用工具类使用指南.docx

    Java 常用工具类是开发中不可或缺的部分,它们提供了许多便利的功能,帮助开发者提高代码质量和开发效率。在Java世界里,String是最常用的类之一,它涵盖了字符串处理的各种基本操作。然而,JDK内置的String API有时...

    java开发常用工具类.zip

    - 字符串工具类通常提供字符串的拼接、分割、替换、检查、去除空白字符等操作。比如,可能会有方法用于去除字符串首尾的空格,检查字符串是否为空,或者实现安全的字符串格式化。 3. **读写表格操作工具类**: - ...

    java 常用辅助工具类

    这里我们主要探讨的是"java 常用辅助工具类",包括字符串操作、数字操作、数据库交互以及日期时间处理等知识点。 1. **字符串操作**: - `StringUtils`:Apache Commons Lang库中的一个类,提供了大量的静态方法,...

    java utils 工具类

    - **字符串处理**:如格式化、拼接、查找、替换、检查空值等。 - **集合操作**:如列表、映射的转换,排序,去重等。 - **数字运算**:如最大值、最小值计算,数字格式化等。 - **日期时间**:日期的格式化、...

    拼接xml调用webservice

    本主题的核心是"拼接XML调用WebService",这通常指的是通过构建XML字符串来构造请求,然后发送该请求到一个Web Service接口以获取响应。以下是对这个过程的详细解释: 1. **XML基础**:XML是一种结构化标记语言,它...

    java常用工具类代码和API

    "Java常用工具类代码和API"这个资源包很可能包含了各种实用的工具类和Java标准库的API示例,这对于学习和理解Java编程至关重要。下面将详细探讨一些常见的Java工具类和API。 1. **Java集合框架**: - `ArrayList`...

    安卓开发框架工具类相关-安卓开发也会经常用到的28个java常用的工具类源码.zip

    这个压缩包“安卓开发框架工具类相关-安卓开发也会经常用到的28个java常用的工具类源码.zip”包含了多个Java工具类,可能涵盖了多个领域,如网络通信、字符串处理、日期时间操作等。以下是对这些工具类的一些常见...

    28个java常用的工具类源码

    1. **字符串工具类**:如StringUtils,提供了诸如格式化、拼接、检查空值等实用方法,避免了手动处理字符串时的常见错误。 2. **集合工具类**:如CollectionsUtils,提供了对List、Set、Map等集合的通用操作,如...

    开发常用工具类

    "开发常用工具类"这个主题涵盖了各种不同领域的实用功能,例如字符串处理、日期时间操作、集合操作等。下面将详细介绍这些工具类中的常见知识点: 1. **字符串工具类**: - `StringUtils`:Apache Commons Lang ...

    28个java常用的工具类

    10. **XML处理工具类**:如`XmlUtils`,提供XML的解析、生成等功能,`parseXml()`可以解析XML文件,`toXmlString()`则将对象转换为XML字符串。 11. **JSON处理工具类**:例如`JsonUtils`,支持JSON对象与Java对象...

    多层集合的JSON串拼接

    4. **JS工具类**:`jquery-1.3.2.min.js`是jQuery库的一个版本,它简化了JavaScript的DOM操作和AJAX请求。在前端,你可以使用jQuery的`$.ajax()`或`$.getJSON()`方法来发送异步请求到服务器获取JSON数据,然后使用`$...

    java开发工具类(14个)

    - String工具类:字符串操作,如拼接、格式化、校验等。 - JSON工具类:解析和生成JSON对象,可能包含Gson、Jackson或Fastjson库的封装。 - IO工具类:文件读写、流操作等,用于处理文件和数据流。 - Log工具类...

    28个java常用的工具类源码.zip

    3. **字符串操作**:字符串在编程中非常常见,工具类可能会提供一些便捷的字符串格式化、拼接、查找、替换、分割等方法,以提高代码的可读性和效率。 4. **IO操作**:Java的`java.io`和`java.nio`包提供了大量的...

    Java工具类之Apache的Commons Lang和BeanUtils

    Java工具类是开发过程中不可或缺的一部分,它们提供了许多实用的功能,帮助开发者提高代码的效率和可维护性。Apache Commons Lang和BeanUtils是两个非常著名的Java工具库,由Apache软件基金会开发和维护。这两个库...

    31个java工具类大汇总

    `StringUtils`是Apache Commons Lang库中的一个核心工具类,专门用于处理字符串。它提供了大量的静态方法,例如检查字符串是否为空、去除两端空白字符、分割字符串、替换子串、比较字符串等,极大地增强了Java标准...

    http请求,xml格式

    在这个例子中,我们创建了一个XML字符串,并通过POST方法发送到指定URL,同时设置`Content-Type`头部来表明数据格式是XML。 总之,HTTP请求中的XML数据传输是Web服务和API交互的重要组成部分。理解如何构造和发送...

Global site tag (gtag.js) - Google Analytics