c# – 如何使用XmlAttributeOverrides覆盖集合元素的xml元素名称?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何使用XmlAttributeOverrides覆盖集合元素的xml元素名称?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1875字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何使用XmlAttributeOverrides覆盖集合元素的xml元素名称?](/upload/InfoBanner/zyjiaocheng/754/074868b5c8d441ad8e397d53dfd279ff.jpg)
我有一个非常基本的对象对象模型,由System.Xml.XmlSerialization东西序列化.我需要使用XmlAttributeOverrides功能为子元素集合设置xml元素名称.
public class Foo{
public List Bars {get; set; }
}
public class Bar {
public string Widget {get; set; }
}
使用标准的xml序列化程序,这将成为
<Foo>
<Bars>
<Bar>...</Bar>
</Bars>
</Foo>
我需要使用XmlOverrideAttributes来说明这一点
<Foo>
<Bars>
<SomethingElse>...</SomethingElse>
</Bars>
</Foo>
但我似乎无法让它重命名集合中的子元素…我可以重命名集合本身…我可以重命名根…不知道我做错了什么.
这是我现在的代码:
XmlAttributeOverrides xOver = new XmlAttributeOverrides();
var bars = new XmlElementAttribute("SomethingElse", typeof(Bar));
var elementNames = new XmlAttributes();
elementNames.XmlElements.Add(bars);
xOver.Add(typeof(List), "Bars", elementNames);
StringBuilder stringBuilder = new StringBuilder();
StringWriter writer = new StringWriter(stringBuilder);
XmlSerializer serializer = new XmlSerializer(typeof(Foo), xOver);
serializer.Serialize(writer, someFooInstance);
string xml = stringBuilder.ToString();
但这根本不会改变元素的名称……我做错了什么?
谢谢
解决方法:
要做到这一点,你需要[XmlArray]和[XmlArrayItem](理想情况下两者都要明确):
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
public class Foo {
public List<Bar> Bars { get; set; }
}
public class Bar {
public string Widget { get; set; }
}
static class Program {
static void Main() {
XmlAttributeOverrides xOver = new XmlAttributeOverrides();
xOver.Add(typeof(Foo), "Bars", new XmlAttributes {
XmlArray = new XmlArrayAttribute("Bars"),
XmlArrayItems = {
new XmlArrayItemAttribute("SomethingElse", typeof(Bar))
}
});
XmlSerializer serializer = new XmlSerializer(typeof(Foo), xOver);
using (var writer = new StringWriter()) {
Foo foo = new Foo { Bars = new List<Bar> {
new Bar { Widget = "widget"}
}};
serializer.Serialize(writer, foo);
string xml = writer.ToString();
}
}
}
内容总结
以上是互联网集市为您收集整理的c# – 如何使用XmlAttributeOverrides覆盖集合元素的xml元素名称?全部内容,希望文章能够帮你解决c# – 如何使用XmlAttributeOverrides覆盖集合元素的xml元素名称?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。