您的位置:首页 > 其它

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

2013-03-21 19:30 197 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: