XML - 序列化类 - 一些问题

时间:2014-04-22 11:39:34

标签: c# xml serialization

我的想法是将类的属性序列化为XML文件,然后将此文件上载到服务器。这是因为我想再次下载此文件并读出序列化内容。

这样的结构:

文件存在(myfile.xml) - >将类(myclass.cs)中的数据序列化到文件 - >上传文件。

现在内容可能如下所示:

<?xml version="1.0"?>

-<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SomeProperty>0.1.0.0</SomeProperty>
<SomePropertiesChild>Test</SomePropertiesChild>

</MyClass>

嗯,所以这不是问题,我已经构建了一个类来将数据序列化到文件中,所以看起来就像上面那样。

现在的问题是,我不知道该怎么做。我希望下次新数据能够像这样序列化,但它应该附加到该XML文件,而不是新文件。 因此,我下载此文件,然后将新数据序列化为附件,以便它看起来如下:

<?xml version="1.0"?>

-<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SomeProperty>0.1.0.0</SomeProperty>
<SomePropertiesChild>Test</SomePropertiesChild>
<!-- This is the part that should be attached -->
<SomeProperty>0.2.0.0</SomeProperty>
<SomePropertiesChild>Test2</SomePropertiesChild>

</MyClass>

这应该重复多次:下载文件,序列化新数据并将其附加到此数据,然后再次上传。 现在,第二点是,我想读出来。

为此,我也使用XML类。对于数据应该序列化的类型的类型参数,我设置包含属性的类。 但是现在,我的XML中有更多相同名称的节点,如上所述。我现在想把它分开。 因此,不仅是一个类,而且对于具有相同名称的每个节点都是一个新类。

告诉你更清楚一点:

在XML中我们有第一对(SomeProperty,SomePropertiesChild)。 现在应该将此序列反序列化为myclass.cs,其中包含XML节点的正确属性。例如:

public class MyClass
{
   public Version SomeProperty {get; set;}
   public string SomeProeprtiesChild {get; set;}
}

然后应该将第一个XML对反序列化为该类。 但我想为每个XML - &#34;对&#34;做这个。在我的XML文件中,但我无法在脑子里找到正确的结构。 我应该在这里制作清单还是应该如何做? 我真的希望我能够清楚地解释一下,这很难解释。 我也不知道如何通过附加来做到这一点。有什么提示吗?

如果您有疑问,请询问

2 个答案:

答案 0 :(得分:2)

您正在寻找的不仅仅是序列化。你想多次序列化同一个对象吗?

一种可能的解决方案是序列化List<MyClass>并在文件存在时将新实例附加到列表中。

答案 1 :(得分:2)

简而言之,没有内置的方法来做你正在寻找的东西。但是,这并不意味着它无法完成......

最简单,最接近的内置方式是维护List<MyClass>,只要您上传/下载等并进行序列化,就会更新<ListOfMyClass> <MyClass> <Property>1</Property> ... </MyClass> <MyClass> <Property>2</Property> ... </MyClass> </ListOfMyClass> 。但是,这不会得到你想要的确切XML,这会产生类似

的内容
MyClass

更复杂的方法是让WriteXml实施IXmlSerializable并覆盖ReadXml / {{1}}的行为来处理您的自定义XML格式。