2016-11-11 2 views
0

ich unter xml Text analysieren will die Klasse ObjektParsen XML-Text in der Klasse in C#

xml:

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

Klasse:

 public class AAA 
     { 
      public BBB data; 
     } 

     public class BBB 
     { 
      public string Error; 
     } 

Code:

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

Fehler:

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

Antwort

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

ist JSON nicht XML, also Sie haben deserialize als JSON (nicht als XML) zu Object.

Verwenden Sie NewtonSoft.Json DLL, um dieses Textformat zu analysieren.

Alternative ...:

Oder Sie können Ihre JSON zu einer tatsächlichen valid xml zuerst konvertieren und dann das Objekt konvertieren.

Sie können auch einige Online-JSON-to-XML-Konverter versuchen:
(pass das Ergebnis AAA info = (AAA)(serializer.Deserialize(reader));)

Beispiel resultieren aus: 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: Bitte überprüfen Sie Ihre Klassenstrukturen auch.

Korrekte Json wird.

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

Sie Klassen werden so sein.

[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; } 
} 

Sie können auf diese Weise Ihr XML-Objekt entlizensieren.

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

Sie sind falsch in dieser Zeile.

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

Ich hoffe, dass Sie die Bearbeitung nicht stören. Fühlte es war besser, nur diese zusätzlichen Informationen zu Ihrer Antwort hinzufügen, da es nur erweitert, was Sie ohnehin gesagt ... –

+0

@ VC.One danke für Ihre Bearbeitung, Es ist ein guter Geist. Es wird dem OP helfen. –

+0

@viveknuna Ich habe die Frage – SajjadZare