4

XML 応答を正常に返す SOAP/XML タイプの Web サービスを呼び出しています。

これまでのところ、返されたオブジェクトを取得し、それを XmlNode オブジェクトにキャストすることができました..実際のデータが期待どおりに見つかりました。すべて良い。

ここで、データを Windows フォームの DataGridView にバインドしたいと考えています。XDocument と LINQ を使用してXML のサブセットにバインドする C# DataGridViewの良い例をここで見ました。

私が抱えている問題は、Web サービスへの呼び出しによって返されたオブジェクトに基づいて XDocument を作成する方法がわからないことです。これどうやってするの ?

これは、Webサービスから返されたデータをキャプチャした方法です..これは機能します..

' call the webservice  '
Dim rawResults As Object = lw.runQuery(parameter1,parameter2)

Dim testresult As XmlNode = DirectCast(rawResults, XmlNode)

Dim docXml As New XmlDocument
docXml.AppendChild(docXml.ImportNode(testresult, True)).

.etc

Web サービスによって返される XML は次のとおりです (各「runQueryResult」は DataGridView の行になります)。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <runQueryResponse xmlns="http://xxx.ddd.com/">
    <runQueryResult>
        <runQueryResponse xmlns="">
        <runQueryRecord>
            <catalogid>513</catalogid>
            <name>Vacuum tube </name>
            <this_month>0</this_month>
            <month_past1>1</month_past1>
            <month_past2>0</month_past2>
            <month_past3>0</month_past3>
            <month_past4>0</month_past4>
            <month_past5>0</month_past5>
            <month_past6>0</month_past6>
        </runQueryRecord>
        <runQueryRecord>
            <catalogid>5311</catalogid>
            <name>Adapter expansion</name>
            <this_month>0</this_month>
            <month_past1>1</month_past1>
            <month_past2>0</month_past2>
            <month_past3>0</month_past3>
            <month_past4>0</month_past4>
            <month_past5>0</month_past5>
            <month_past6>0</month_past6>

                            ... etc.
4

1 に答える 1

8

XDocumentから直接作成できるため、インスタンスXmlNodeを作成する必要はありません。XmlDocument

Dim xDoc As XDocument = XDocument.Load(New XmlNodeReader(testresults))
于 2013-09-05T06:50:07.307 に答える