如何通过C#.NET v3.5为WriteXml编写带有元素的XmlSerializable ReadXml

如何通过C#.NET v3.5为WriteXml编写带有元素的XmlSerializable ReadXml,c#,.net,xml,serialization,C#,.net,Xml,Serialization,我不确定在这里问什么是正确的问题,所以我将尽我最大的努力呈现这个场景 我们有一个ParentObject,它有一个不同维度的数量列表。假设ParentObject说它有长度、持续时间等 我们希望通过WriteXml/ReadXml将其序列化到Xml和从Xml序列化。我已经编写了WriteXml,没有什么问题。我们的测试输出显示了这些方面的内容 <ParentObject Name="SuchAndSuch"> <Quantities> <Length V

我不确定在这里问什么是正确的问题,所以我将尽我最大的努力呈现这个场景

我们有一个ParentObject,它有一个不同维度的数量列表。假设ParentObject说它有长度、持续时间等

我们希望通过WriteXml/ReadXml将其序列化到Xml和从Xml序列化。我已经编写了WriteXml,没有什么问题。我们的测试输出显示了这些方面的内容

<ParentObject Name="SuchAndSuch">
  <Quantities>
    <Length Value="123.456" />
    <Duration Value="78.9" />
  </Quantities>
</ParentObject>

当然,这过于简单化了。重点是,我们正在用“数量”这个名字写出一个元素。这是使用WriteStarteElement(“数量”)和WriteEndElement()编写的。到目前为止还不错

现在,我正在编写ReadXml,以便将内容读回并重新构造对象。当我尝试读取StartElement(“数量”)时,我收到一个类似“元素‘数量’未找到”的错误

我正在研究关于移动到节点和当前节点的注释。到目前为止,我已经使用了GetAttribute(),仅此而已。据我所知,我们的读者也许还处于起步阶段

有没有更好的方法来读取元素,或者定位读卡器,使其能够读取我们的量子位


谢谢…

这可能无法直接回答您的问题,但是与其编写自己的代码来编写和读取XML,为什么不使用System.XML.Serialization.XmlSerializer来为您完成所有工作呢

我最近才发现它,并使用它备份和恢复了从web服务获取的大量数据

基于我使用过的代码(Stuff=ParentObject)的示例:


前几天我因为昨天建议别人用不同的方式来做而大发雷霆,所以我将在一篇评论中建议你使用XmlSerializer类来序列化和反序列化,并手动保存自己,除非你有理由这样做?好的,问题解决了。Xml元素是您的朋友。每件事都是一个元素,一个元素,一个元素,即使在编写过程中,事情并不一定是这样。不过,这是一种方法,我们采用了“IXmlSerializable拯救我们”的方法。我们在少数地方实现了大部分序列化,使用反射来查询序列化所需的成员。
Stuff stuff = FunctionToCreateStuff();
StreamWriter writer = new StreamWriter("stuff.xml");
x = new System.Xml.Serialization.XmlSerializer(stuff.GetType());
x.Serialize(writer, stuff);
writer.Close();

StreamReader reader = new StreamReader("stuff.xml");
x = new System.Xml.Serialization.XmlSerializer(typeof(Stuff));
Stuff stuff = (Stuff)x.Deserialize(reader);
reader.Close();