2016-11-11 3 views
0

Я хочу, чтобы разобрать ниже XML-текст в объект классаАнализировать Xml текст класса в C#

XML:

<?xml version="1.0" encoding="UTF-8"?><data><Error><![CDATA[No Error]]></Error></data> 

класс:

 public class AAA 
     { 
      public BBB data; 
     } 

     public class BBB 
     { 
      public string Error; 
     } 

Код:

XmlSerializer serializer = new XmlSerializer(typeof(DUserInfo)); 
         using (StringReader reader = new StringReader(xmlText)) 
         { 
          AAA info = (AAA)(serializer.Deserialize(reader)); 
         }//using 

Ошибка:

There is an error in XML document (1, 40). 
<data xmlns=''> was not expected. 

ответ

4
{ 
"?xml": { 
    "@version": "1.0", 
    "@encoding": "UTF-8" 
}, 
"data": { 
    "Error": { 
     "#cdata-section": "No Error" 
    } 
} 
} 

является JSON не XML, так что вы должны десериализации, как JSON (не как XML) в Object.

NewtonSoft.Json dll, чтобы разобрать этот текст.

В качестве альтернативы ...:

Или вы можете преобразовать JSON в фактический valid xml первый, а затем преобразовать его в объект.

Также вы можете попробовать некоторые онлайн JSON-к-XML конвертер:
(передать результат в AAA info = (AAA)(serializer.Deserialize(reader));)

Пример результатом: http://www.utilities-online.info/xmltojson/#.WCVnky2LQrg

<?xml version="1.0" encoding="UTF-8" ?> 
    <?xml> 
     <@version>1.0</@version> 
     <@encoding>UTF-8</@encoding> 
    </?xml> 
    <data> 
     <Error> 
      <#cdata-section>No Error</#cdata-section> 
     </Error> 
    </data> 

PS: Пожалуйста, проверьте структуры класса слишком.

Правильный Json будет.

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <Error> 
     <cdata-section>No Error</cdata-section> 
    </Error> 
</data> 

Вы будете такими, как это.

[XmlRoot(ElementName="Error")] 
public class Error { 
    [XmlElement(ElementName="cdata-section")] 
    public string Cdatasection { get; set; } 
} 

[XmlRoot(ElementName="data")] 
public class Data { 
    [XmlElement(ElementName="Error")] 
    public Error Error { get; set; } 
} 

Вы можете десализировать свой xml на объект таким образом.

string xmlText = "your xml"; 
XmlSerializer serializer = new XmlSerializer(typeof(Data)); 
    using (StringReader reader = new StringReader(xmlText)) 
    { 
     Data info = (Data)(serializer.Deserialize(reader)); 
    } 

В этой строке вы делаете неправильный путь.

XmlSerializer serializer = new XmlSerializer(typeof(DUserInfo)); 
+1

Надеюсь, вы не против редактирования. Почувствовав, что лучше просто добавить эту дополнительную информацию в свой ответ, поскольку она просто расширяет то, что вы сказали, так или иначе ... –

+0

@ VC.One спасибо за ваше редактирование, его хороший дух. Это поможет ОП. –

+0

@viveknuna я отредактировал вопрос – SajjadZare

Смежные вопросы