`

【原创】组装xml字符串工具类

    博客分类:
  • java
xml 
阅读更多
因为要用到拼接一些值成xml字符串所以写下了一个下工具类:
Java代码 复制代码 收藏代码
  1.   
  2. import java.util.ArrayList;   
  3. import java.util.HashMap;   
  4. import java.util.List;   
  5. import java.util.Map;   
  6.   
  7. /**  
  8.  * XML元素类  
  9.  
  10.  * @author tangyangbo  
  11.  */  
  12. public class Element {   
  13.     private String name;                 //元素名   
  14.     private String nodeText = "";        //文本值   
  15.     private Map<String,String> property = new HashMap<String,String>(); //属性   
  16.     private boolean isleaf = true;       //是否子节点   
  17.     private List<Element> child = new ArrayList<Element>();         //子节点   
  18.        
  19.     public Element(String name) {   
  20.         this.name = name;   
  21.     }   
  22.        
  23.     public String getName() {   
  24.         return name;   
  25.     }   
  26.   
  27.     public void setName(String name) {   
  28.         this.name = name;   
  29.     }   
  30.     public String getNodeText() {   
  31.         return nodeText;   
  32.     }   
  33.     public void setNodeText(String nodeText) {   
  34.         this.nodeText = nodeText;   
  35.     }   
  36.     public Map<String, String> getProperty() {   
  37.         return property;   
  38.     }   
  39.     public void setProperty(Map<String, String> property) {   
  40.         this.property = property;   
  41.     }   
  42.     public boolean isIsleaf() {   
  43.         return isleaf;   
  44.     }   
  45.     //这个方法应该屏蔽   
  46.     public void setIsleaf(boolean isleaf) {   
  47.         this.isleaf = isleaf;   
  48.     }   
  49.     public List<Element> getChild() {   
  50.         return child;   
  51.     }   
  52.     public void setChild(List<Element> child) {   
  53.         this.child = child;   
  54.         if(this.isleaf && this.child.size() > 0){   
  55.             this.isleaf = false;   
  56.         }   
  57.     }   
  58.   
  59.     /**  
  60.      * 添加属性  
  61.      * @param key  
  62.      * @param value  
  63.      */  
  64.     public void addProperty(String key,String value){   
  65.         this.property.put(key, value);   
  66.     }   
  67.        
  68.     /**  
  69.      * 添加子节点  
  70.      * @param el  
  71.      */  
  72.     public void addChild(Element el){   
  73.         this.child.add(el);   
  74.         if(this.isleaf && this.child.size() > 0){   
  75.             this.isleaf = false;   
  76.         }   
  77.     }   
  78. }  
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * XML元素类

 * @author tangyangbo
 */
public class Element {
	private String name;                 //元素名
	private String nodeText = "";        //文本值
	private Map<String,String> property = new HashMap<String,String>(); //属性
	private boolean isleaf = true;       //是否子节点
	private List<Element> child = new ArrayList<Element>();         //子节点
	
	public Element(String name) {
		this.name = name;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public String getNodeText() {
		return nodeText;
	}
	public void setNodeText(String nodeText) {
		this.nodeText = nodeText;
	}
	public Map<String, String> getProperty() {
		return property;
	}
	public void setProperty(Map<String, String> property) {
		this.property = property;
	}
	public boolean isIsleaf() {
		return isleaf;
	}
	//这个方法应该屏蔽
	public void setIsleaf(boolean isleaf) {
		this.isleaf = isleaf;
	}
	public List<Element> getChild() {
		return child;
	}
	public void setChild(List<Element> child) {
		this.child = child;
		if(this.isleaf && this.child.size() > 0){
			this.isleaf = false;
		}
	}

	/**
	 * 添加属性
	 * @param key
	 * @param value
	 */
	public void addProperty(String key,String value){
		this.property.put(key, value);
	}
	
	/**
	 * 添加子节点
	 * @param el
	 */
	public void addChild(Element el){
		this.child.add(el);
		if(this.isleaf && this.child.size() > 0){
			this.isleaf = false;
		}
	}
}


Java代码 复制代码 收藏代码
  1.   
  2. import java.util.Iterator;   
  3.   
  4. /**  
  5.  * XMl工具类  
  6.  
  7.  * @author tangyangbo  
  8.  */  
  9. public class XmlUtil {   
  10.        
  11.     static String lt = "<";   
  12.     static String ltEnd = "</";   
  13.     static String rt = ">";   
  14.     static String rhtEnd = "/>";   
  15.     static String quotes = "\"";   
  16.     static String equal = "=";   
  17.     static String blank = " ";   
  18.        
  19.     public static String elementToXml(Element el){   
  20.         StringBuffer result = new StringBuffer();   
  21.         //元素开始   
  22.         result.append(lt).append(el.getName());   
  23.         //判断是否有属性   
  24.         if(el.getProperty() != null && el.getProperty().size() > 0 ){   
  25.             Iterator iter = el.getProperty().keySet().iterator();   
  26.             while (iter.hasNext()) {   
  27.                 String key = String.valueOf(iter.next());   
  28.                 String value = el.getProperty().get(key);   
  29.                 result.append(blank).append(key).append(equal)   
  30.                 .append(quotes).append(value).append(quotes).append(blank);   
  31.             }   
  32.         }   
  33.         result.append(rt);//结束标记   
  34.         /*  
  35.          * 判断是否是叶子节点  
  36.          * 是叶子节点,添加节点内容  
  37.          * 不是叶子节点,循环添加子节点  
  38.          */  
  39.         if(el.isIsleaf()){   
  40.             result.append(el.getNodeText());   
  41.         }else{   
  42.             for(Element element :el.getChild()){   
  43.                 result.append(elementToXml(element));   
  44.             }   
  45.         }   
  46.         //元素结束   
  47.         result.append(ltEnd).append(el.getName()).append(rt);   
  48.         return result.toString();   
  49.     }   
  50. }  
import java.util.Iterator;

/**
 * XMl工具类

 * @author tangyangbo
 */
public class XmlUtil {
	
	static String lt = "<";
	static String ltEnd = "</";
	static String rt = ">";
	static String rhtEnd = "/>";
	static String quotes = "\"";
	static String equal = "=";
	static String blank = " ";
	
	public static String elementToXml(Element el){
		StringBuffer result = new StringBuffer();
		//元素开始
		result.append(lt).append(el.getName());
		//判断是否有属性
		if(el.getProperty() != null && el.getProperty().size() > 0 ){
			Iterator iter = el.getProperty().keySet().iterator();
			while (iter.hasNext()) {
				String key = String.valueOf(iter.next());
				String value = el.getProperty().get(key);
				result.append(blank).append(key).append(equal)
				.append(quotes).append(value).append(quotes).append(blank);
			}
		}
		result.append(rt);//结束标记
		/*
		 * 判断是否是叶子节点
		 * 是叶子节点,添加节点内容
		 * 不是叶子节点,循环添加子节点
		 */
		if(el.isIsleaf()){
			result.append(el.getNodeText());
		}else{
			for(Element element :el.getChild()){
				result.append(elementToXml(element));
			}
		}
		//元素结束
		result.append(ltEnd).append(el.getName()).append(rt);
		return result.toString();
	}
}



Java代码 复制代码 收藏代码
  1.   
  2. import java.util.Iterator;   
  3.   
  4. /**  
  5.  * xml测试类  
  6.  
  7.  * @author tangyangbo  
  8.  */  
  9. public class XMLTest {   
  10.   
  11.     /**  
  12.      * @param args  
  13.      */  
  14.     public static void main(String[] args) {   
  15.         Element el = new Element("node");   
  16.            
  17.         Element el1 = new Element("node1");   
  18.         el1.addProperty("name""zhangshan");   
  19.         el1.addProperty("password""123465");   
  20.         el1.setNodeText("11111");   
  21.         el.addChild(el1);   
  22.            
  23.         Element el2 = new Element("node1");   
  24.         el2.addProperty("name""lisi");   
  25.         el2.addProperty("password""3333");   
  26.         el2.setNodeText("11111");   
  27.         el.addChild(el2);   
  28.         System.out.println(XmlUtil.elementToXml(el));   
  29.     }   
  30. }  
import java.util.Iterator;

/**
 * xml测试类

 * @author tangyangbo
 */
public class XMLTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Element el = new Element("node");
		
		Element el1 = new Element("node1");
		el1.addProperty("name", "zhangshan");
		el1.addProperty("password", "123465");
		el1.setNodeText("11111");
		el.addChild(el1);
		
		Element el2 = new Element("node1");
		el2.addProperty("name", "lisi");
		el2.addProperty("password", "3333");
		el2.setNodeText("11111");
		el.addChild(el2);
		System.out.println(XmlUtil.elementToXml(el));
	}
}

运行结果:
<node><node1 name="zhangshan"  password="123465" >11111</node1><node1 name="lishi"  password="3333" >11111</node1></node>
分享到:
评论

相关推荐

    XML 解析与拼装工具类

    基于Dom4j的Xml解析与组装项目工具类.

    XML实用大全----xml详细参考书

    4.2.5 将XML组装在一起... 56 4.3 XML格式的优点... 71 4.4 编制样式单以便显示文档... 72 4.4.1 与样式单连接... 73 4.4.2 为根元素指定样式规则... 74 4.4.3 为标题指定样式规则... 75 4.4.4 为球员和统计...

    XMl实用大全(资料全易学习)

    14.11.2 数字到字符串的变换 486 14.12 对输出元素排序 488 14.13 CDATA和&lt;符 491 14.14 方式 493 14.15 使用xsl:variable定义常数 496 14.16 命名模板 496 14.16.1 参数 498 14.17 删除和保留空白 501 14.18 选择 ...

    xml实用大全和轻松学习手册和无废话xml

    14.11.2 数字到字符串的变换 486 14.12 对输出元素排序 488 14.13 CDATA和&lt;符 491 14.14 方式 493 14.15 使用xsl:variable定义常数 496 14.16 命名模板 496 14.16.1 参数 498 14.17 删除和保留空白 501 14.18 选择 ...

    XML实用大全(web开发必备手册)

    4.2.5 将XML组装在一起... 56 4.3 XML格式的优点... 71 4.4 编制样式单以便显示文档... 72 4.4.1 与样式单连接... 73 4.4.2 为根元素指定样式规则... 74 4.4.3 为标题指定样式规则... 75 4.4.4 为球员和统计...

    XML编程综合资料库

    4.2.5 将XML组装在一起... 56 4.3 XML格式的优点... 71 4.4 编制样式单以便显示文档... 72 4.4.1 与样式单连接... 73 4.4.2 为根元素指定样式规则... 74 4.4.3 为标题指定样式规则... 75 4.4.4 为球员和统计...

    XML实用大全

    53 4.2.5 将XML组装在一起... 56 4.3 XML格式的优点... 71 4.4 编制样式单以便显示文档... 72 4.4.1 与样式单连接... 73 4.4.2 为根元素指定样式规则... 74 4.4.3 为标题指定样式规则... 75 ...

    Java核心技术II(第8版)

    12.3 字符串参数 12.4 访问对象域 12.4.1 访问实例域 12.4.2 访问静态域 12.5 编码签名 12.6 调用Java方法 12.6.1 实例方法 12.6.2 静态方法 12.6.3 构造器 12.6.4 替代方法调用 12.7 访问数组元素 12.8 错误处理 ...

    Struts in Action中文版

    1. 介绍.........................................................................................................18 1.1. 关于本书..........................................................................

    struts in Action

    1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................

Global site tag (gtag.js) - Google Analytics