繁体   English   中英

C#XmlSerializer:在嵌套对象上创建xmlns属性

[英]C# XmlSerializer: Create xmlns attribute on a nested object

我想要使​​用的API需要我在嵌套元素上设置xmlns -attribute,如下所示:

<root>
   <mainelement>
   </mainelement>
   <mainelement>
      <subelement xmlns="http://example.com/xml" otherAttr="value">
      </subelement>
   </mainelement>    
</root>

subelement的类定义如下:

public class subelement
{
    [XmlAttribute]
    public string otherAttr { get; set; }
    [XmlAttribute]
    public string xmlns { get; set; } = "http://example.com/xml";
}

但是,当我尝试使用XmlSerializer序列化根对象时, xmlns -attribute始终缺失。 否则它工作正常。 当我重命名它创建的这个属性时,我想它与xmlns因为它是保留关键字。

此外,我无法使用标准方法将名称空间设置为Serialize方法的第三个参数,因为我只希望此属性位于subelement对象上。

有没有办法在序列化后手动编辑文件而完成此操作?

您需要在mainelementsubelement属性上指定正确的命名空间。

public class mainelement
{
    [XmlElement(Namespace = "http://example.com/xml")]
    public subelement subelement { get; set; }
}

public class subelement
{
    [XmlAttribute]
    public string otherAttr { get; set; }    
}

一下工作演示的小提琴

暂无
暂无

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

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