java learning: IO-- generated xml file and XStream DOM method code summary

Xml file and generate the DOM method code XStream summary

Preview the results:
Here Insert Picture Description

1, DOM way

public static void test1(){
		try {
			// 创建解析器工厂			
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder db = factory.newDocumentBuilder();
			Document document = db.newDocument();
			// 不显示standalone="no"
			document.setXmlStandalone(true);
			Element message = document.createElement("MESSAGE");
			Element messageHead = document.createElement("MESSAGE_HEAD");
			Element messageBody = document.createElement("MESSAGE_BODY");
			
			//MESSAGE_HEAD
			Element HEAD_1 = document.createElement("KEY_NO");
			Element HEAD_2 = document.createElement("MESSAGE_TYPE");
			Element HEAD_3 = document.createElement("CUSTOMS_FIELD");
			Element HEAD_4 = document.createElement("SEND_TIME");

			HEAD_1.setTextContent("59A72DE9-8D13-4DEB-AFB3-B0E4C640ABC9");
			HEAD_2.setTextContent("00005212");
			HEAD_3.setTextContent("ITA");
			HEAD_4.setTextContent("2009-11-06T21:50:38.646+08:00");
			
			messageHead.appendChild(HEAD_1);
			messageHead.appendChild(HEAD_2);
			messageHead.appendChild(HEAD_3);
			messageHead.appendChild(HEAD_4);
			
			
			String[][] arr = new String[][] {
					{ "1G1BL52P7TR115520", "AAA", "BBB", "CCC" },
					{ "1G1BL52P7TR115521", "DDD", "EEE", "FFF" } };

			for (int i = 0; i < 2; i++) {
				Element messageITEM = document.createElement("MESSAGE_ITEM");

				//MESSAGE_ITEM
				Element ITEM_1 = document.createElement("VE_ID_NO");
				Element ITEM_2 = document.createElement("YARD_CODE");
				Element ITEM_3 = document.createElement("ZONE_NO");
				Element ITEM_4 = document.createElement("COLUMN_NO");
				ITEM_1.setTextContent(arr[i][0]);
				ITEM_2.setTextContent(arr[i][1]);
				ITEM_3.setTextContent(arr[i][2]);
				ITEM_4.setTextContent(arr[i][3]);
				messageITEM.appendChild(ITEM_1);
				messageITEM.appendChild(ITEM_2);
				messageITEM.appendChild(ITEM_3);
				messageITEM.appendChild(ITEM_4);
				
				
				messageBody.appendChild(messageITEM);
				
			}
			message.appendChild(messageHead);
			message.appendChild(messageBody);
			document.appendChild(message);
			
			// 创建TransformerFactory对象
			TransformerFactory tff = TransformerFactory.newInstance();
			// 创建 Transformer对象
			Transformer tf = tff.newTransformer();
			
			// 输出内容是否使用换行
			tf.setOutputProperty(OutputKeys.INDENT, "yes");
			// 创建xml文件并写入内容
			tf.transform(new DOMSource(document), new StreamResult(new File("book1.xml")));
			
			StringWriter stringWriter = new StringWriter();
			tf.transform(new DOMSource(document), new StreamResult(
					stringWriter));

			System.err.println("生成book1.xml成功");
			String content =stringWriter.toString();
			// 以xml的形式保存在本地
			if (content != null && !content.equals("")) {
				FileOutputStream fs = null;
				OutputStream out = null;
				try {
					InputStream is = new ByteArrayInputStream(
							content.getBytes("UTF-8"));
					byte[] buffer = new byte[is.available()];
					fs = new FileOutputStream("D:/other/test/" + "tttest1.xml");
					out = new BufferedOutputStream(fs);
					is.read(buffer);
					out.write(buffer);
					out.close();
					fs.close();

				} catch (Exception e) {

					e.printStackTrace();
				}
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("生成book1.xml失败");
		}		
	}

2, XStream way

核心:xStream.alias(“MESSAGE_ITEM”,MESSAGE_ITEM.class);

public class MyTest {
	public static void main(String[] args) {
		// 首先根据xml文件的结构,构建各个构成部分
		MyTestMESSAGE message = new MyTestMESSAGE();
		MyTestMESSAGE_HEAD messageHead = new MyTestMESSAGE_HEAD();
		MyTestMESSAGE_BODY messageBody = new MyTestMESSAGE_BODY();
		List<MyTestMESSAGE_ITEM> messageItems = new ArrayList<MyTestMESSAGE_ITEM>();

		// 设置MESSAGE_HEAD
		messageHead.setKEY_NO("59A72DE9-8D13-4DEB-AFB3-B0E4C640ABC9");
		messageHead.setCUSTOMS_FIELD("00005212");
		messageHead.setMESSAGE_TYPE("ITA");
		messageHead.setSEND_TIME("2009-11-06T21:50:38.646+08:00");

		// 设置MESSAGE_ITEM
		String[][] arr = new String[][] {
				{ "1G1BL52P7TR115520", "AAA", "BBB", "CCC" },
				{ "1G1BL52P7TR115521", "DDD", "EEE", "FFF" } };

		for (int i = 0; i < 2; i++) {
			MyTestMESSAGE_ITEM messageItem = new MyTestMESSAGE_ITEM();
			messageItem.setVE_ID_NO(arr[i][0]);
			messageItem.setYARD_CODE(arr[i][1]);
			messageItem.setZONE_NO(arr[i][2]);
			messageItem.setCOLUMN_NO(arr[i][3]);

			messageItems.add(messageItem);
		}
		message.setMESSAGE_BODY(messageBody);
		message.setMESSAGE_HEAD(messageHead);
		messageBody.setMESSAGE_ITEMS(messageItems);

		// xml格式化
		Map<String, Class> xstreamProperties = new HashMap<String, Class>();
		xstreamProperties.put("MESSAGE_ITEM", MyTestMESSAGE_ITEM.class);
		xstreamProperties.put("MESSAGE_BODY", MyTestMESSAGE_BODY.class);
		xstreamProperties.put("MESSAGE_HEAD", MyTestMESSAGE_HEAD.class);
		xstreamProperties.put("MESSAGE", MyTestMESSAGE.class);

		// XStream设置
		XStream xstream = new XStream(new DomDriver("UTF-8",
				new XmlFriendlyNameCoder("-_", "_")));
		for (Map.Entry<String, Class> m : xstreamProperties.entrySet()) {
			xstream.alias(m.getKey(), m.getValue());
			if (m.getKey().equals("MESSAGE_BODY")) {
				try {
					if (m.getValue().getDeclaredField("MESSAGE_ITEMS") != null) {
						xstream.addImplicitCollection(m.getValue(),
								"MESSAGE_ITEMS");
					}
				} catch (SecurityException e) {
					System.out.println("不存在MESSAGE_ITEMS");
				} catch (NoSuchFieldException e) {
					System.out.println("不存在MESSAGE_ITEMS");
				}
			}

		}
		// xstream.alias("MESSAGE_BODY", MyTestMESSAGE_BODY.class);

		String content = xstream.toXML(message);
		String oldPlaceStr1 = "<MESSAGE>";
		String replaceStr1 = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"
				+ "<MESSAGE>";

		content = content.replace(oldPlaceStr1, replaceStr1);
		// 以xml的形式保存在本地
		if (content != null && !content.equals("")) {
			FileOutputStream fs = null;
			OutputStream out = null;
			try {
				InputStream is = new ByteArrayInputStream(
						content.getBytes("UTF-8"));
				byte[] buffer = new byte[is.available()];
				fs = new FileOutputStream("D:/other/test/" + "tttest.xml");
				out = new BufferedOutputStream(fs);
				is.read(buffer);
				out.write(buffer);
				out.close();
				fs.close();

			} catch (Exception e) {

				e.printStackTrace();
			}
		}
	}

}

public class MyTestMESSAGE   implements Serializable{
	
		private MyTestMESSAGE_HEAD MESSAGE_HEAD;
		private MyTestMESSAGE_BODY MESSAGE_BODY;
		public MyTestMESSAGE_HEAD getMESSAGE_HEAD() {
			return MESSAGE_HEAD;
		}
		public void setMESSAGE_HEAD(MyTestMESSAGE_HEAD mESSAGE_HEAD) {
			MESSAGE_HEAD = mESSAGE_HEAD;
		}
		public MyTestMESSAGE_BODY getMESSAGE_BODY() {
			return MESSAGE_BODY;
		}
		public void setMESSAGE_BODY(MyTestMESSAGE_BODY mESSAGE_BODY) {
			MESSAGE_BODY = mESSAGE_BODY;
		}

		
}

public class MyTestMESSAGE_HEAD implements Serializable{

	private String KEY_NO;

	private String MESSAGE_TYPE;

	private String CUSTOMS_FIELD;

	private String SEND_TIME;

	public String getKEY_NO() {
		return KEY_NO;
	}

	public void setKEY_NO(String key_no) {
		KEY_NO = key_no;
	}

	public String getMESSAGE_TYPE() {
		return MESSAGE_TYPE;
	}

	public void setMESSAGE_TYPE(String message_type) {
		MESSAGE_TYPE = message_type;
	}

	public String getCUSTOMS_FIELD() {
		return CUSTOMS_FIELD;
	}

	public void setCUSTOMS_FIELD(String customs_field) {
		CUSTOMS_FIELD = customs_field;
	}

	public String getSEND_TIME() {
		return SEND_TIME;
	}

	public void setSEND_TIME(String send_time) {
		SEND_TIME = send_time;
	}
}

public class MyTestMESSAGE_BODY implements Serializable{
	private List<MyTestMESSAGE_ITEM> MESSAGE_ITEMS;

	public List<MyTestMESSAGE_ITEM> getMESSAGE_ITEMS() {
		return MESSAGE_ITEMS;
	}

	public void setMESSAGE_ITEMS(List<MyTestMESSAGE_ITEM> mESSAGE_ITEMS) {
		MESSAGE_ITEMS = mESSAGE_ITEMS;
	}
	
}
public class MyTestMESSAGE_ITEM implements Serializable{

	private String VE_ID_NO;

	private String YARD_CODE;

	private String ZONE_NO;

	private String COLUMN_NO;

	public String getVE_ID_NO() {
		return VE_ID_NO;
	}

	public void setVE_ID_NO(String vE_ID_NO) {
		VE_ID_NO = vE_ID_NO;
	}

	public String getYARD_CODE() {
		return YARD_CODE;
	}

	public void setYARD_CODE(String yARD_CODE) {
		YARD_CODE = yARD_CODE;
	}

	public String getZONE_NO() {
		return ZONE_NO;
	}

	public void setZONE_NO(String zONE_NO) {
		ZONE_NO = zONE_NO;
	}

	public String getCOLUMN_NO() {
		return COLUMN_NO;
	}

	public void setCOLUMN_NO(String cOLUMN_NO) {
		COLUMN_NO = cOLUMN_NO;
	}
	

}

Published 57 original articles · won praise 13 · views 1092

Guess you like

Origin blog.csdn.net/weixin_42924812/article/details/105275305