gpt4 book ai didi

C# XmlSerializer : Create xmlns attribute on a nested object

转载 作者:数据小太阳 更新时间:2023-10-29 02:28:52 26 4
gpt4 key购买 nike

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

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

子元素的类定义如下:

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

但是,当我尝试使用 XmlSerializer 序列化根对象时,xmlns 属性总是丢失。否则它工作正常。当我重命名它创建的这个属性时,我猜它与作为保留关键字的 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; }
}

参见 this fiddle用于工作演示。

关于C# XmlSerializer : Create xmlns attribute on a nested object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42019927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com