繁体   English   中英

C# 更新 XmlElemt 的 XMLNS

[英]C# update XMLNS of XmlElemt

我有一个类:

[XmlRoot(ElementName = "Root", Namespace = "https://NS.com")]
public class Root
{
        [XmlElement(Namespace = "https://NS2.com")]
        public Header header { set; get; }
        public Body{ set; get; }
}

我将obj序列化为 XML:

using (MemoryStream ms = new MemoryStream())
{
    using (XmlWriter wr = XmlWriter.Create(ms))
    {
        serializer.Serialize(wr, obj, ns);
    }

    ms.Position = 0;
    XmlDocument doc.Load(ms);

    ms.Close();
}

我找不到任何方法将 Root 和 Header 的 nameSpace 更改为 newNS 和 newHeadNS。 有没有办法更改文档中的命名空间? 任何帮助将不胜感激

您可以使用XmlAttributeOverrides来覆盖它。

初始化您的序列化程序:

var overrides = new XmlAttributeOverrides();
overrides.Add(typeof(Root), new XmlAttributes() { XmlRoot = new XmlRootAttribute() { Namespace = "https://NS.new" } });
var header = new XmlAttributes();
header.XmlElements.Add(new XmlElementAttribute() { Namespace = "https://NS.new/head" });
overrides.Add(typeof(Root), "Header", header);

var serializer = new XmlSerializer(typeof(Root), overrides);

并且,以下要序列化:

serializer.Serialize(wr, obj);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM