肥皂序列化和反序列化

时间:2019-03-28 13:42:07

标签: c# xml soap

WebService和SoapFormatter中的DataTable对象上的序列化和反序列化。

我正在尝试反序列化已经通过WebService(Soap)服务进行序列化的DataTable;但是将结果放入SoapFormatter时,它指的是尚未声明名称空间前缀(xs)。任何想法如何声明此名称空间?我已经搜索了SoapFormatter类,找不到任何可插入这些前缀的内容。 另外,看起来您需要导入包含对象的程序集,而我还没有弄清楚该怎么做。

string data = @"
    <DataTable xmlns=\"http://www.ici.curitiba.org/\">
      <xs:schema id=\"NewDataSet\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">
        <xs:element name=\"NewDataSet\" msdata:IsDataSet=\"true\" msdata:MainDataTable=\"Table\" msdata:UseCurrentLocale=\"true\">
          <xs:complexType>
            <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">
              <xs:element name=\"Table\">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name=\"id\" type=\"xs:int\" minOccurs=\"0\" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:schema>
      <diffgr:diffgram xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" xmlns:diffgr=\"urn:schemas-microsoft-com:xml-diffgram-v1\">
        <NewDataSet xmlns=\"\">
          <Table diffgr:id=\"Table1\" msdata:rowOrder=\"0\">
            <id>6413777</id>
          </Table>
        </NewDataSet>
      </diffgr:diffgram>
    </DataTable>
";

var sf = new SoapFormatter();

var ms = new MemoryStream(Encoding.UTF8.GetBytes(data));
ms.Position = 0;
var obj = sf.Deserialize(ms) as DataTable;

0 个答案:

没有答案