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 zhangpeng
*
*/
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
* @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 && !im().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 = (name);
return value == null ? defaultValue : value;
}
/**
* 为当前XmlObject对象添加⼦XmlObject对象
*
* @param xmlObject
* 给定XmlObject对象
* 给定XmlObject对象
*/
public void addSubXmlObject(XmlObject xmlObject) {
xml标签大全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 (Name().equals(name)) {
xmlObjects.add(temp);
}
}
return xmlObjects;
}
public XmlObject getUniqueSubXmlObjectByName(String name) {
for (XmlObject temp: subXmlObjects) {
if (Name().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 = Set();
for (Entry<String, Object> entry : set) {
String tempName = Key();
Object tempValue = Value();
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 = ();
sb.NoHeadXml(blank, split, count));
}
sb.append(blanks + "</" + name + ">" + split);
}
String();
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论