C#中对DataTable的SOAP响应

时间:2011-08-26 03:32:55

标签: c# xml soap datatable readxml

我一直在搜索并尝试多种形式,以与Excel相同的方式将XML响应传递给简单的DataTable。

XML就像:

<?xml version="1.0" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <SOAPSDK4:Function xmlns:SOAPSDK4="http://www.externalwebservice.com/message/">
            <Lists>
                <ListCode>12345</ListCode>
                <ListGroups>
                    <ListGroup>
                        <CodeGroup>ASDF</CodeGroup>
                        <DescriptionGroup>Example</DescriptionGroup>
                    </ListGroup>
                </ListGroups>
                <List>
                    <CodeList>ABC</CodeList>
                    <DescriptionList>Example List</DescriptionList>
                    <ListCategories>
                        <ListCategory>Type1</ListCategory>
                        <ListCategory>Type2</ListCategory>
                    </ListCategories>
                    <ListKinds>
                        <Kind>
                            <KindType>A</KindType>
                            <KindTarget>1</KindTarget>
                            <KindAttributes>
                                <KindAttribute1>A</KindAttribute1>
                                <KindAttribute2>B</KindAttribute2>
                            </KindAttributes>
                        </Kind>
                    </ListKinds>
                </List>
            </Lists>
        </SOAPSDK4:Function>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Excel的功能可以帮助我完成我需要的工作,就是用这些数据及其关系来填充4个表格。

我尝试过使用DataSet.ReadXML,但问题在于,由于某些原因,此方法会生成14个表,数据没有用,因为根本没有关系。 后来我尝试使用DataTable.ReadXML,但它给了我一个问题“DataTable不支持来自Xml的模式推断。”然后尝试使用DataTable.ReadXmlSchema(XML)并且它给出了一个没有根文档的错误,然后我用命令提示符创建了一个XSD并且生成了两个错误,最后我用Visual Studio生成了XSD,它生成了4个XSD没有错误,但没有创建列,也没有添加任何数据。

我现在没有想法了。有什么建议?也许不是没有规范化数据的DataTable(Excel会做什么),而是另一种直接使用XML的方法?

谢谢。

1 个答案:

答案 0 :(得分:1)

我的建议是C#3中的Linq.XML技术.LINQ to XML提供了一个内存中的XML编程接口,它利用了.NET语言集成查询(LINQ)框架。 LINQ to XML使用最新的.NET Framework语言功能,可与更新的,重新设计的文档对象模型(DOM)XML编程接口相媲美。

http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx

提供了一些有趣的快速相关示例