You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中反序列化包含嵌套相同节点的XML字符串

将XML反序列化为C#对象的实现步骤

首先根据你的XML结构定义对应的C#类,确保匹配XML的节点和属性:

using System.Xml.Serialization;

// 对应根节点<n-hierarchy>
[XmlRoot("n-hierarchy")]
public class NHierarchy
{
    // 根节点下的所有<n>节点
    [XmlElement("n")]
    public List<NNode> Nodes { get; set; } = new List<NNode>();
}

// 单个<n>节点的类定义
public class NNode
{
    // 匹配name属性
    [XmlAttribute("name")]
    public string Name { get; set; }

    // 匹配n_id属性
    [XmlAttribute("n_id")]
    public string NId { get; set; }

    // 嵌套的子<n>节点
    [XmlElement("n")]
    public List<NNode> ChildNodes { get; set; } = new List<NNode>();
}

然后使用XmlSerializer完成反序列化操作:

using System.IO;
using System.Xml.Serialization;

public static NHierarchy DeserializeXml(string xmlString)
{
    var serializer = new XmlSerializer(typeof(NHierarchy));
    
    using (var reader = new StringReader(xmlString))
    {
        return (NHierarchy)serializer.Deserialize(reader);
    }
}

// 调用示例
string xmlContent = @"<n-hierarchy>
    <n name=""ABC"" n_id=""971"" />
    <n name=""XYZ"" n_id=""972"">
        <n name=""jkl"" n_id=""973"">
            <n name=""wer"" n_id=""974""/>
            <n name=""cvb"" n_id=""975""/>
        </n>
    </n>
</n-hierarchy>";

NHierarchy result = DeserializeXml(xmlContent);

关键注意点

  • 类的属性与XML的属性/节点名称大小写完全匹配,否则无法正确映射
  • 如果XML包含命名空间,需要在XmlRoot和XmlElement特性中添加Namespace参数指定
  • 实际使用时建议添加异常处理,捕获XML格式错误、类型不匹配等问题

内容的提问来源于stack exchange,提问作者VInayK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:54:56