在 c# 中将 Xml 文本解析为类
本文关键字:文本 中将 Xml | 更新日期: 2023-09-27 18:17:19
我想将下面的 xml 文本解析为类的对象
.xml:
<?xml version="1.0" encoding="UTF-8"?><data><Error><![CDATA[No Error]]></Error></data>
.class:
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.
{
"?xml": {
"@version": "1.0",
"@encoding": "UTF-8"
},
"data": {
"Error": {
"#cdata-section": "No Error"
}
}
}
是 JSON 而不是 XML,所以你已经反序列化为 JSON(而不是 XML(来Object
。
使用 NewtonSoft.Json
dll 分析此文本格式。
或者... :
或者,您可以先将 JSON 转换为实际有效的 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));