从XmlNode创建Xdocument对象

5
我有一个对SOAP/XML类型的Web服务的调用,成功返回XML响应。
到目前为止,我已经成功将返回的对象转换为XmlNode对象,并在其中找到了预期的实际数据。一切都很好。
现在,我想在Windows窗体中将我的数据绑定到DataGridView上。我在这里看到了一个不错的例子C# DataGridView binding to subset of XML,它使用XDocument和LINQ提供了一个数据源,似乎非常适合我。
我的问题是,我不知道如何基于从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.
1个回答

10
你可以直接从XmlNode创建XDocument,因此你不必创建XmlDocument实例。
Dim xDoc As XDocument = XDocument.Load(New XmlNodeReader(testresults))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接