我正在尝试开发一个特定于我们项目的 SOAP 客户端和解析器。我已经完成了客户端,它调用了多种(几种不同的)SOAP Web 服务并以 XML 格式获取响应 SOAP 消息。
我的目标:
从任何类型的集合中获取任何节点或属性的值,它应该适用于我的所有 Web 服务响应。
例如,我会这样称呼:
String h1 = collection.get("html/body/h1");
h1 的值应该是 'StackOverflow' 并且来自:
<html>
<head></head>
<body>
<h1>StackOverflow</h1>
<p>XML parsing in Java</p>
</body>
</html>
等等
我的做法:
现在我有响应消息。我想解析它并将所有节点(和属性)值分配给一个集合(映射)并从该集合中获取数据。集合的 (Map)键将是节点的路径,值将是节点或属性的值。
例如
<MethodResponse xmlns="any.xmlns">
<MethodResult>any value</MethodResult>
<Node1>
<Node2>
<Node3>
node3 value is here
<Node3>
</Node2>
</Node1>
<respCode>99</respCode>
<respNote>any value</respNote>
</MethodResponse>
如果我需要在这里 respCode,我可以这样调用:
String respCode = map.get("/MethodResponse/respCode");
或者,到 Node3:
String node3Value = map.get("/MethodResponse/Node1/Node2/Node3");
就像 XPath。但我不想要任何映射或任何 Java 类。我只想从其路径访问节点(或属性)值。
成功标准:
它适用于这些和几个不同的 SOAP 消息:
- http://www.w3schools.com/xml/note.xml
- http://www.w3schools.com/xml/cd_catalog.xml
- http://www.w3schools.com/xml/simple.xml
- http://msdn.microsoft.com/en-us/library/ms762271%28v=vs.85%29.aspx
还有我的问题:
- 我的方法是真的吗?
- 如果是,我该怎么做?是否有任何工作代码或教程?
- 如果没有,我该怎么做?