用于序列化/反序列化 xml 文件的类 [英] Class to serialise/deserialise xml file

查看:27
本文介绍了用于序列化/反序列化 xml 文件的类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将文件反序列化为 vb.net 对象.

I need to deserialise the file into a vb.net object.

<ANIMALS>
  <ANIMAL NO = "1">Dog</ANIMAL>
  <ANIMAL NO = "2">Cat</ANIMAL>
  <ANIMAL NO = "3">Cow</ANIMAL>
  <ANIMAL NO = "4">Fish</ANIMAL>
</ANIMALS>

我有一个名为 clsANIMALS 的类,其属性返回动物列表:

I have a class called clsANIMALS with a property returning a list of animals:

<Serializable()> _
<System.Xml.Serialization.XmlRoot("ANIMALS")> _
Public Class clsANIMALS


<System.Xml.Serialization.XmlElement("ANIMAL")> _
Public Property lstAnimal() As List(Of clsAnimal)

和一个名为 clsANIMAL 的子类,它具有属性NO"的属性:

and a sub class called clsANIMAL having a property for the attribute "NO":

<Serializable()> _
<System.Xml.Serialization.XmlRoot("ANIMAL")> _
Public Class clsANIMAL

<System.Xml.Serialization.XmlAttribute("NO")> _
Public Property iNoAnimal() As Integer

谁能告诉我如何反序列化诸如 Dog、Cat.. 之类的文本?

Can someone tell me how to deserialise the text such as Dog, Cat..?

推荐答案

您可以使用 XmlTextAttribute 获取值:

You can use the XmlTextAttribute to get values:

<Serializable()> _
<System.Xml.Serialization.XmlRoot("ANIMAL")> _
Public Class clsANIMAL

    <System.Xml.Serialization.XmlAttribute("NO")> _
    Public Property iNoAnimal() As Integer

    <System.Xml.Serialization.XmlText()> _
    Public Property strName As String
End Class

然后您可以反序列化 XML 文件并使用 strName 显示名称:

Then you can deserialize the XML file and show the names using strName:

Dim stream = System.IO.File.OpenRead("Animals.xml")
Dim serializer = New System.Xml.Serialization.XmlSerializer(GetType([clsANIMALS]))
Dim animals As clsANIMALS = serializer.Deserialize(stream)
For Each animal In animals.lstAnimal
    Console.WriteLine(animal.strName)
Next

这篇关于用于序列化/反序列化 xml 文件的类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆