我调用了一个成功返回XML响应的SOAP/XML类型的Web服务。
到目前为止,我已经设法获取返回的对象,将其转换为 XmlNode 对象......并按预期在那里找到了实际数据。都很好。
但是,现在我想将数据绑定到 Windows 窗体中的 DataGridView。我在这里看到一个很好的例子 C# DataGridView 绑定到 XML 的子集,使用 XDocument 和 LINQ 为网格提供数据源,这对我来说似乎非常有效。
我遇到的问题是我不知道如何根据调用 Web 服务返回的对象创建 XDocument。我该怎么做?
这就是我从网络服务捕获返回数据的方式..它有效..
' 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.
直接从 XmlNode
创建XDocument
,因此您不必创建XmlDocument
实例:
Dim xDoc As XDocument = XDocument.Load(New XmlNodeReader(testresults))