Проблема с преобразованием complexType ОТ объекта в XML - PullRequest
0 голосов
/ 27 августа 2010

Для тех, кто любит решать проблемы, вот большой: P

Что ж, я разрабатываю систему с использованием веб-сервисов, где я отправляю и получаю XML в качестве параметра (а не обычные параметры, такие как Int, String, bool и т. д.).

После того, как я получаю XML, я проверяю XML с помощью XSD, а также преобразовываю его в объект ... после процесса я также преобразую этот объект в XML (проверенный XSD) и вернуть в качестве ответа на мой запрос WS.

Что ж, моя проблема: у меня сложный тип, который мне нужно преобразовать с помощью отражения, но у меня возникает проблема, которую я никогда раньше не видел.

Мой XSD:

  <xsd:element name="EnviarLoteRpsResposta">
    <xsd:complexType>
      <xsd:choice>
        <xsd:sequence>
          <xsd:element name="NumeroLote" type="tsNumeroLote" minOccurs="1" maxOccurs="1"/>
          <xsd:element name="DataRecebimento" type="xsd:dateTime" minOccurs="1" maxOccurs="1"/>
          <xsd:element name="Protocolo" type="tsNumeroProtocolo" minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:element ref="ListaMensagemRetorno" minOccurs="1" maxOccurs="1"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>

Мой класс (обычный класс с GET и SET):

    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd", IsNullable = false)]
    public class EnviarLoteRpsResposta
    {

        private object[] itemsField;

        private ItemsChoiceType[] itemsElementNameField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("DataRecebimento", typeof(System.DateTime))]
        [System.Xml.Serialization.XmlElementAttribute("ListaMensagemRetorno", typeof(ListaMensagemRetorno))]
        [System.Xml.Serialization.XmlElementAttribute("NumeroLote", typeof(string), DataType = "nonNegativeInteger")]
        [System.Xml.Serialization.XmlElementAttribute("Protocolo", typeof(string))]
        [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemsElementName")]
        public object[] Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                this.itemsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("ItemsElementName")]
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public ItemsChoiceType[] ItemsElementName
        {
            get
            {
                return this.itemsElementNameField;
            }
            set
            {
                this.itemsElementNameField = value;
            }
        }
    }
}

Как я использую этот класс?:

EnviarLoteRpsResposta enviarLoteRpsResposta = new EnviarLoteRpsResposta();
enviarLoteRpsResposta.Items = new object[1];
                enviarLoteRpsResposta.Items[0] = DateTime.Now;

                enviarLoteRpsResposta.ItemsElementName = new ItemsChoiceType[1];
                enviarLoteRpsResposta.ItemsElementName[0] = ItemsChoiceType.DataRecebimento;

Моя ошибка возникает при попытке преобразовать этот объект в XML: XmlSerializer xs = new XmlSerializer (enviarLoteRpsResposta.GetType ());

Моя ошибка: произошла ошибка, отражающая тип 'NFSEWS.Models.Bean.EnviarLoteRpsResposta '.

Я не знаю, что я могу сделать, чтобы решить эту проблему ..

1 Ответ

0 голосов
/ 27 августа 2010
...