传递字符串数组报文和解析

1 .项目中,难免遇到两个系统平台数据的交互,此时就需要通过接口来完成了;

2.WebService 基于 HTTP 通信,它跨平台,使得易购平台能无缝衔接,将应用程序的逻辑和数据暴露,使得其他应用系统可重用这些数据;

使用xml对数据封装,使得内容和结构分离,很强的可操作性,作为纯文本可方便的穿过防火墙,它规范统一、支持多种编码、易于扩展;

组装报文:传递字符串数组

public void createXml() {
		try {
			String[] input = { "damon,907931506", "chris,776295345" };
			String[] line = new String[2];
			DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance();
			DocumentBuilder build = dFact.newDocumentBuilder();
			Document doc = build.newDocument();
			doc.setXmlStandalone(true);
			Element root = doc.createElement("root");
			doc.appendChild(root);
			Element memberList = doc.createElement("members");
			root.appendChild(memberList);
			for (int i = 0; i < input.length; i++) {
				line = input[i].split(",");
				Element member = doc.createElement("member");
				memberList.appendChild(member);
				Element name = doc.createElement("name");
				name.appendChild(doc.createTextNode(line[0]));
				member.appendChild(name);
				Element phone = doc.createElement("qq");
				phone.appendChild(doc.createTextNode(line[1]));
				member.appendChild(phone);
			}
			TransformerFactory tFact = TransformerFactory.newInstance();
			Transformer trans = tFact.newTransformer();

			StringWriter writer = new StringWriter();
			StreamResult result = new StreamResult(writer);
			DOMSource source = new DOMSource(doc);
			trans.transform(source, result);
			System.out.println(writer.toString());
		} catch (TransformerException ex) {
			System.out.println("Error outputting document");
		} catch (ParserConfigurationException ex) {
			System.out.println("Error building document");
		}
	}

 调试输出结果为:

<?xml version="1.0" encoding="UTF-8"?>
<root>
	<members>
		<member>
			<name>damon</name>
			<qq>907931506</qq>
		</member>
		<member>
			<name>chris</name>
			<qq>776295345</qq>
		</member>
	</members>
</root>

 

客户端对报文进行解析:(对普通格式的xml进行解析,字符串数组类似)

public Map readXml(String xml) {
		Map map = new HashMap();
		try {
			Document doc = (Document) DocumentHelper.parseText(xml);
			Element element = doc.getRootElement();
			Iterator Elements = element.elementIterator();
			while (Elements.hasNext()) {
				Element user = (Element) Elements.next();
				if (user.getName().equals("returnCode")) {
					map.put(user.getName(), user.getStringValue());
				}
				Iterator iters = user.elementIterator("param");
				while (iters.hasNext()) {
					Element itemEle = (Element) iters.next();
					String paramKey = itemEle.elementTextTrim("paramKey");
					String paramValue = itemEle.elementTextTrim("paramValue");
					map.put(paramKey, paramValue);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return map;
	}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值