我一直在搜索并尝试多种形式,以与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的方法?
谢谢。
答案 0 :(得分:1)
我的建议是C#3中的Linq.XML技术.LINQ to XML提供了一个内存中的XML编程接口,它利用了.NET语言集成查询(LINQ)框架。 LINQ to XML使用最新的.NET Framework语言功能,可与更新的,重新设计的文档对象模型(DOM)XML编程接口相媲美。
提供了一些有趣的快速相关示例