首页 > 解决方案 > 将 XML 数据转换为 C# 类

问题描述

我的项目是 Asp.net Core
我想将 XML 数据转换为 C# 类,XML 数据有一个节点PersonelInfo我尝试读取 XML 但它的代码不起作用。我该如何解决这个代码?我的问题是什么?

var xmlGetDetailsUser = new XmlDocument();
xmlGetDetailsUser.LoadXml(await responseMessageGetDetailsUser.Content.ReadAsStringAsync());
using (StringReader reader = new StringReader(xmlGetDetailsUser.InnerXml))
{
    try
    {
        PersonelInfo data = (PersonelInfo)(serializer.Deserialize(reader));
    }
    catch (System.Exception e)
    { }
}

班级

public class PersonelInfo
{
  public string PersonelCode { get; set; }
  public string Email { get; set; }
}

xmlGetDetailsUser.InnerXml有这个值:

<?xml version=\"1.0\" encoding=\"utf-8\"?>
<ArrayOfPersonelInfo xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"sample url .....\">
    <PersonelInfo>
        <PersonelCode>99999</PersonelCode>    
        <Email>test@test.com</Email>        
    </PersonelInfo>
</ArrayOfPersonelInfo>

运行我的程序时在 try catch 中显示此异常

XML 中有错误

标签: c#xmlasp.net-core

解决方案


您应该设置命名空间XmlSerializer并将其类型更改为List<PersonelInfo>.

尝试这个:

XmlSerializer serializer = new XmlSerializer(typeof(List<PersonelInfo>), "sample url ....");
            XmlReaderSettings settings = new XmlReaderSettings();
            using (StringReader textReader = new StringReader(await responseMessageGetDetailsUser.Content.ReadAsStringAsync()))
            {
                using (XmlReader xmlReader = XmlReader.Create(textReader, settings))
                {
                    var data = (List<PersonelInfo>)serializer.Deserialize(xmlReader);
                }
            }

推荐阅读