[英]Adding an attribute to the root XML element when serializing an object
我有一个序列化为XML文件的对象。 一切都按预期工作,但我想向根元素添加Version属性。
最好的方法是什么?
这是我如何序列化的示例:
MyProgram newProgram = new MyProgram()
{
ValueA = "A value.",
ValueB = "B value.",
ValueC = "C value."
};
XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyProgram));
StreamWriter streamWriter = new StreamWriter(fileName);
xmlSerializer.Serialize(streamWriter, newProgram);
streamWriter.Close();
现在,我的XML看起来像这样:
<MyProgram>
<ValueA>A value.</ValueA>
<ValueB>B value.</ValueB>
<ValueC>C value.</ValueC>
</MyProgram>
但是我想要这个:
<MyProgram Version="1.0">
<ValueA>A value.</ValueA>
<ValueB>B value.</ValueB>
<ValueC>C value.</ValueC>
</MyProgram>
谢谢!
第一
假设您有一个具体的类而不是一个匿名类,则将您的XML修改为如下所示
[XmlRoot("MyProgram")]//sepcifies the name of the root element
public class MyProgram
{
[XmlAttribute("Version")]//name not required unless you want to change output to something different
public string Version{get;set;}
[XmlElement("ValueA")]//again, name not required if the name is the same
public ValueA ValueA{get;set;}
....
}
然后,根据您指定的内容创建MyProgram类将为您提供所需的输出,还请注意,如果最终结果不符合要求,则可能需要将XML标记添加到ValueA / B / C类。
第二个将XML数据序列化为字符串,并使用简单的Regex / String操作插入所需的值,然后将字符串保存到所需的位置
第三
您可以使用XElement查询您的XML字符串/创建它,然后设置Version属性
XElement x = XElement.Load("Your XML location");
var yourRoot = x.Descendants("MyProgram").FirstOrDefaul();
yourRoot.SetAttributeValue("Version","1.0");
yourRoot.Save("Your XML location");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.