私たちのプロジェクトに固有の 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
そして私の質問:
- 私のアプローチは正しいですか?
- はいの場合、どうすればそれを行うことができますか? 動作するコードやチュートリアルはありますか?
- いいえの場合、どうすればそれを行うことができますか?