Что вызывает эту ошибку десериализации XML в C #? - PullRequest
0 голосов
/ 15 февраля 2019

Я получаю следующую ошибку при десериализации XML в C # несмотря на то, что я перечислил это пространство имен в атрибутах XMLType и XMLRoot в моем классе.

<ProductRegistrationInterface xmlns='http://www.4cs.com/CLMSchema'> was not expected.

XML выглядит следующим образом:

  <?xml version="1.0"?>
  <ns4CS:ProductRegistrationInterface 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:ns4CS="http://www.4cs.com/CLMSchema">
    <ns4CS:MessageHeader>
      <TargetReference>Some Value</TargetReference>
    </ns4CS:MessageHeader>
    <ProductRegistrations>
      <ProductRegistration>...</ProductRegistration>
      <ProductRegistration>...</ProductRegistration>
      <ProductRegistration>...</ProductRegistration>
    </ProductRegistrations>
  </ns4CS:ProductRegistrationInterface>

Класс ProductRegistrationInterface выглядит следующим образом:

[XmlType(AnonymousType = true, Namespace = "http://www.4cs.com/CLMSchema")]
[XmlRoot(Namespace = "http://www.4cs.com/CLMSchema", IsNullable = false)]
public class ProductRegistrationInterface
{
    /// <summary>
    /// Collection of <see cref="ProductRegistration"/> class.
    /// </summary>
    [XmlArray(Namespace = "")]
    [XmlArrayItem(nameof(ProductRegistration), IsNullable = false)]
    public ProductRegistration[] ProductRegistrations { get; set; }        
}

И, наконец, вот код, который я использую:

XmlSerializer xs = new XmlSerializer(typeof(ProductRegistrationInfo));
StreamReader sr = new StreamReader(@"Test.xml");
ProductRegistrationInfo s = (ProductRegistrationInfo)xs.Deserialize(sr);
sr.Close();

Чего мне не хватает?

1 Ответ

0 голосов
/ 15 февраля 2019

Несоответствие типов: вы пытаетесь десериализовать в экземпляр типа ProjectRegistration Interface , но используете сериализатор, созданный для типа ProductRegistration Информация .

...