如何通过c# . net v3.5编写XmlSerializable ReadXml与WriteXml的元素

本文关键字:ReadXml WriteXml 元素 XmlSerializable 编写 何通过 net v3 | 更新日期: 2023-09-27 18:07:22

我真的不知道在这里应该问什么问题,所以我将尽我所能来呈现这个场景。

我们有一个ParentObject和一个不同维度的Quantity列表。比如ParentObject它有长度,持续时间等

我们希望通过WriteXml/ReadXml序列化Xml和Xml之间的数据。我已经编写了WriteXml,没有太多问题。我们的测试输出显示了以下内容:

<ParentObject Name="SuchAndSuch">
  <Quantities>
    <Length Value="123.456" />
    <Duration Value="78.9" />
  </Quantities>
</ParentObject>
当然,这是一种过度简化。重点是,我们要写一个名为" quantity "的元素。这是使用WriteStartElement("quantity")和WriteEndElement()编写的。到目前为止一切顺利。

现在我正在编写ReadXml来读取内容并必要地重新构造对象。当我尝试和ReadStartElement("quantity")时,我收到一个类似"元素' quantity '未找到"的错误。

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

是否有更好的方法来读取元素或以其他方式定位阅读器,使其能够读取我们的Quantites?

谢谢…

如何通过c# . net v3.5编写XmlSerializable ReadXml与WriteXml的元素

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

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

基于我所使用的代码的例子(Stuff = ParentObject):

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();