Десериализовать XML в C # модель с CDATA - PullRequest
2 голосов
/ 10 мая 2019

Я десериализирую следующий XML в объект C #

<?xml version="1.0" encoding="utf-8"?>
<Message>
  <Request>
    <FromInfo>
      <Provider>
        <ProviderName><![CDATA[Name]]></ProviderName>
      </Provider>
    </FromInfo>
    <ToInfo>
      <Provider>
        <ProviderID><![CDATA[123]]></ProviderID>
        <ID><![CDATA[1]]></ID>
      </Provider>
    </ToInfo>
  </Request>
  <RS>
    <Add>
      <AccountInfoRecord>
        <UserInfo>
          <FirstName><![CDATA[Some]]></FirstName>
          <LastName><![CDATA[Name]]></LastName>
          <DayPhone><![CDATA[0123456]]></DayPhone>
          <Email><![CDATA[SampleEmail]]></Email>
          <UserAddress>
            <Address1><![CDATA[Address]]></Address1>
            <Address2><![CDATA[Something]]></Address2>
            <City><![CDATA[Oslo]]></City>
            <State />
            <PostalCode><![CDATA[1330]]></PostalCode>
            <Country><![CDATA[some]]></Country>
          </UserAddress>
        </UserInfo>
        <YourUserKey />
      </AccountInfoRecord>
    </Add>
  </RS>
</Message>

Я получаю ошибку в <State />

Но не в <YourUserKey />, а <State></State>

Ниже приведена ошибка Unable to cast object of type 'System.Xml.XmlElement' to type 'System.Xml.XmlCDataSection'.

А это класс модели


    [XmlElement(ElementName = "State")]
        public XmlCDataSection StateCData
        {
            get
            {
                return !string.IsNullOrEmpty(State)
                    ? new XmlDocument().CreateCDataSection(State) : null;
            }
            set
            {
                State = value?.Value;
            }
        }

Я также просмотрел несколько тем, но не смог найти конкретный ответ.

Как сериализовать строку как CDATA с использованием XmlSerializer?

...