Мыло сериализовать и десериализовать - PullRequest
0 голосов
/ 28 марта 2019

Сериализация и десериализация в WebService и SoapFormatter для объекта DataTable.

Я пытаюсь десериализовать DataTable, который уже был сериализован с помощью службы WebService (Soap); но при помещении результата в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...