我想将xml文本解析为类
的对象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.
答案 0 :(得分: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-to-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));