`

【原创】组装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解析与组装项目工具类.

    C# RestSharpUtil RestSharp工具类

    这个工具类的目的是减少对`RestRequest`对象的频繁组装,`RestRequest`是RestSharp库中用于构造HTTP请求的核心类。通过创建一个辅助类,我们可以将常见的请求配置(如URL、HTTP方法、参数、头信息等)抽象为方法,...

    Java用xStream拼接xml

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

    使用Qt 生成xml文件

    为了在DLL中读取XML文件,你可以使用`QDomDocument::parse`方法,它可以从一个字符串或文件读取XML内容。例如: ```cpp QDomDocument loadXML(const QString& filePath) { QDomDocument doc; QFile file(filePath...

    XML文档生成与解析

    7. 生成XML字符串:使用`Document`的`asXML()`方法将XML树转换为字符串。 8. 保存到文件:使用`FileWriter`将XML字符串写入文件。 解析XML文档主要涉及读取和操作已存在的XML文件。DOM4J提供了`SAXReader`类来进行...

    xml 绑定 binding

    这简化了XML数据的处理,使得开发者可以像操作普通对象一样处理XML数据,而无需手动解析和组装XML字符串。在Java中,XML绑定有多种实现,如JAXB(Java Architecture for XML Binding)和Castor。 本文主要围绕Java...

    正则表达式组装器

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。在编程和数据处理领域,正则表达式(Regex)是不可或缺的一部分。"正则表达式组装器"是一个专为此目的设计的工具,它允许用户无需记住...

    使用Gson和Json-lib去解析json和组装Json数据例子

    Gson是由Google开发的一个Java库,它能将Java对象转换为JSON字符串,也能将JSON数据转换回等效的Java对象。使用Gson进行JSON操作非常直观且高效。 1. **安装Gson** 在你的项目中,可以通过Maven或Gradle添加Gson...

    用java写的报文转换工具

    这可能涉及到字段重命名、数据类型转换(例如,从字符串到整数)、数据格式调整(如日期格式转换)等操作。 3. **构建新报文**:基于解析和转换的结果,工具会构建出符合目标系统要求的新报文。这可能需要遵循特定...

    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实用大全和轻松学习手册和无废话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 为球员和统计...

    2024常用API包括日期和String-HM

    - **数据组装**:例如,在构建复杂的SQL语句或XML文档时,频繁的字符串拼接操作非常适合使用`StringBuilder`。 - **日志记录**:在生成日志文件时,通常需要拼接多种类型的日志信息,使用`StringBuilder`可以提高...

    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 ...

    dozer-user-guide

    - 字符串到日期的映射:将字符串按照指定格式转换为日期类型。 - 枚举映射:将字符串或整数映射到枚举类型。 - 集合映射:处理集合类型数据的映射。 - Map-backed属性映射:处理Map类型数据的映射。 - 索引映射:...

    call中方法实现的步骤.docx

    调用`intMsgUtil.invokeRtnMapOrList()`方法,传入请求报文和地市编码(在这里可能是空字符串),此方法会实际发起接口调用,并返回一个包含响应结果的对象。 6. **处理返回结果**: 最后,我们需要检查接口调用...

    建造者模式学习以及与工厂模式的区别

    在实际应用中,建造者模式常用于软件配置、数据库连接字符串的生成、XML或JSON对象的解析等场景。例如,当你需要构建一个复杂的对象,如一个复杂的订单,订单包含商品、数量、地址等多个部分,每个部分的构建都可以...

    Java将epub数学公式(mathml)转化为图片

    2. **解析MathML**:使用JEuclid提供的`MathMLConverter`类,加载包含MathML的字符串或文件,并将其转换为JEuclid的内部表示。 3. **创建图像**:创建一个`BufferedImage`对象,这是Java标准库中的图像容器。然后,...

Global site tag (gtag.js) - Google Analytics