2009-03-07 12 views
-2

私はJavaでちょっと錆びていて、これは初めてmetro/JAX-WSを使用しているので、これが愚かな質問であれば謝ります。Java(メトロ)で.NET Webサービスを使用する - XMLNode/XMLDocumentの消費?

.NET Webサービスを使用するクライアントを作成する必要があります。私は基本をダウンしている。私はWSDLからラッパーを生成しました。オブジェクトとポートを作成して呼び出しを行い、応答を得ることができます。

Widgets d = new Widgets(); 
    WidgetsSoap dp = d.getWidgetsSoap(); 
    ((BindingProvider)dp).getRequestContext(). put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://actualsite/foo.asmx"); 

    UserGetWidgetsResponse.UserGetWidgetsResult j = dp.userGetWidgets(); 

ウェブサービスの戻り値は、ほとんどすべてXmlDocumentまたはXmlNodeです。 wsimportによって生成された "UserGetWidgetsResponse.UserGetWidgetsResult"から、呼び出しによって返された実際のXMLにどのようにすればよいですか?

私はたくさんのメソッドでこれらのサービスをいくつか持っているので、どのような方法でも生成されたラッパーを変更する必要がないソリューションを見つけることを望んでいます。また、Webサービスから返される情報を管理することもできません。

+0

Java側でXmlNodeとXmlDocumentを取得してもよろしいですか?それらはC#のようです。この発言は馬鹿に思えるかもしれませんが、多くのXMLパーサーがなくなり、すべてが違って振る舞います。 – extraneon

+0

XmlNode/XmlDocumentは、JavaのDocumentオブジェクトやNodeオブジェクトと直接同等のものです。 WSからXmlNode/XmlDocumentsを返すことは、複合データを返すためにMSが提案する方法です。これはWSDLの「任意の」データとして正しく表示されているようですが、Java側でどのように取り上げるかはわかりません。 – Joe

+0

LocalMessageのペイロードをどこかから取得する必要があるようです。あなたがビジネスにいるLogicalMessageContextを入手できる場合。おそらくdp.getRequestContext()は1を返します。 私は通常、バインディングを生成せずにXMLを直接処理するので、あなたをさらに助けることはできません。 – extraneon

答えて

1

私は週末にこの解決策を見つけたが、私はそれが適切なソリューションだか分からない:

UserGetDevicesResponse.UserGetDevicesResult j = dp.userGetDevices(); 
    List<Object> n = j.getContent(); 
    if (n.size() > 0) 
    { 
     Node z = (Node)n.get(0); 
     System.out.println(nodeToString(z)); 
    } 

これは私が探していたものであるXMLドキュメントの応答を与えます。ツリー上で、私が探しているデータを抽出するために必要な操作を実行できます。

関連する問題