java xml字符串工具_Java常用工具类,拼接XML格式的字符串

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 attributes;

private List subXmlObjects;

/**

* 根据name构造XmlObject

*

* @param name

* 生成xml时标签名,如name="html",则生成xml为

*/

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();

}

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();

}

if (xmlObject != null) {

subXmlObjects.add(xmlObject);

}

}

public List getSubXmlObjectsByName(String name) {

List xmlObjects = new ArrayList();

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 + "

if (attributes != null) {

Set> set = attributes.entrySet();

for (Entry 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 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();

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-06-18 14:33

浏览 1707

评论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值