拆分、重组XML报文,相关内容存入实体类User中

XML 报文样式

<Msg>
	<Id></Id>
	<Name></Name>
	<Info>
		<Sex></Sex>
		<Tel></Tel>
		<Addr></Addr>
	</Info>
</Msg>

方法 处理类:

public class UserService{

	import org.apache.commons.lang.StringUtils;
	import org.dom4j.io.OutputFormat;
	import org.dom4j.io.XMLWriter;
	import org.slf4j.LoggerFactory;
	import java.io.StringWriter;

	
	// 日志
	private static org.slf4j.Logger log = LoggerFactory.getLogger(UserService.class);
	
	/**
	* 拆分 报文内容,并将数据存入 User实体类 中
	*/
	public void splitXML(org.dom4j.Document doc) {
		
	}
	
	
	/**
	*	根据 User 组装待发送报文
	*/
	public String getXMLMsg(User user){

		// 1. 组装xml报文
		org.dom4j.Document doc = org.dom4j.DocumentHelper.createDocument();
		Element element = doc.addElement("Msg");

		element.addElement("Id").setText(user.getId()); // 主键
		element.addElement("Name").setText(user.getName()); // 姓名

		Element elementInfo = element.addElement("Info");
		elementInfo.addElement("Sex").setText(user.getSex()); // 性别
		elementInfo.addElement("Tel").setText(user.getTel()); // 电话号码
		if(StringUtils.isEmpty(user.getAddr())) { // 判断的目的:防止组装的xml报文中,出现“空标签”
			elementInfo.addElement("Addr").setText(user.getAddr()); // 地址
		}
		
		// 2. 格式化xml文件,将doc转换成String
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");
		format.setNewLineAfterDeclaration(false);
		format.setIndent(true);
		format.setIndentSize(4);
		format.setNewlines(true);
		format.setTrimText(true);

		StringWriter stringWriter = new StringWriter();
		XMLWriter xmlWriter = new XMLWriter(stringWriter, format);
		try{
			xmlWriter.write(doc);
		} catch (IOException e) {
			// 异常处理
		}

		String xmlMsg = stringWriter.toString();
		
		log.info("\n{}", xmlMsg);

		return xmlMsg;
		
	}	
}

你可能感兴趣的:(拆分、重组XML报文,相关内容存入实体类User中)