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

C#反序列化XML时忽略不同命名空间的问题求助

解决XML反序列化命名空间不匹配问题

问题核心是XML中的nzb元素带有命名空间http://www.newzbin.com/DTD/2003/nzb,但你的.NET类未配置对应命名空间,导致XmlSerializer无法正确解析元素映射。

修正类定义

给类和属性的XML特性添加匹配的命名空间参数:

[XmlRoot(ElementName = "nzb", Namespace = "http://www.newzbin.com/DTD/2003/nzb")]
[XmlType("nzb", Namespace = "http://www.newzbin.com/DTD/2003/nzb")]
public class Nzb
{
    // 子元素file与根元素同属一个命名空间,需同步指定
    [XmlElement(ElementName = "file", Namespace = "http://www.newzbin.com/DTD/2003/nzb")]
    public FileData[] Files { get; set; } = [];
}

// FileData作为子元素无需XmlRoot特性,若内部有子元素,同样要给对应XML特性加命名空间
public class FileData
{
}

可选:显式指定序列化器默认命名空间

如果上述修改后仍有问题,可在创建XmlSerializer时显式指定默认命名空间:

XmlSerializer serializer = new XmlSerializer(typeof(Nzb), "http://www.newzbin.com/DTD/2003/nzb");
Nzb? obj = null;

using TextReader reader = new StringReader(File.ReadAllText(file));
obj = (Nzb)serializer.Deserialize(reader);

这样就能正确处理带命名空间的XML反序列化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:42:47