Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更新由自定义对象序列化的xml文件中的属性值?_C#_Xml - Fatal编程技术网

C# 如何更新由自定义对象序列化的xml文件中的属性值?

C# 如何更新由自定义对象序列化的xml文件中的属性值?,c#,xml,C#,Xml,我有一个序列化类,每个属性都应用了SerializableAttribute属性。我可以从xml文件中反序列化对象,并更改应用程序中属性的内容。我想将更改后的对象的内容保存为从中反序列化的原始xml。有没有简单的方法将更改后的对象内容更新为xml文件而不重新保存整个文件 [Serializable] public class Product { [XmlAttribute] public double Name {get; set;} [XmlAttribute]

我有一个序列化类,每个属性都应用了SerializableAttribute属性。我可以从xml文件中反序列化对象,并更改应用程序中属性的内容。我想将更改后的对象的内容保存为从中反序列化的原始xml。有没有简单的方法将更改后的对象内容更新为xml文件而不重新保存整个文件

[Serializable]
public class Product
{
    [XmlAttribute]
    public double Name {get; set;}

    [XmlAttribute]
    public double Value { get; set; }
}
请执行以下操作:

  • 反序列化对象
  • 修改该值
  • 再次序列化它

  • 它是一个产品列表还是每个文件只有一个产品Hello K.B,它只有一个产品和一个xml文件亲爱的nsgocev,我执行了步骤1和步骤2,但是如果我再次序列化它,它将更新Name属性的内容。@Whistler如果您只更改
    ,那么
    名称
    应该是相同的。最终,您无法就地编辑xml—您需要重写整个文件,以考虑长度的变化等。文件实际上没有“插入”/“删除”概念—只需附加、覆盖和设置长度。嗨,Marc,如果我使用序列化/反序列化,将重写整个文件。我是否使用linq to xml更新xml文件以更新xml文件内容?linq to xml由于完全相同的原因不会进行就地更新。它允许您重写文件,但不允许在中更改它-place@Whistler正如Marc所说,如果不重新保存整个文件,就无法在适当的位置更新字段。即使就地编辑xml(作为字符串),也需要重新保存整个文件。