【问题标题】:Class to serialise/deserialise xml file反序列化/反序列化 xml 文件的类
【发布时间】:2014-03-24 22:57:15
【问题描述】:

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

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

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

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


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

还有一个名为 clsANIMAL 的子类,它具有属性“NO”的属性:

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

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

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

【问题讨论】:

  • 你知道xsd.exe吗?您使用xsd /c file.xml 生成vb.net 类来读取xml。
  • 下面给出的答案很简单。也谢谢你

标签: xml vb.net


【解决方案1】:

您可以使用XmlTextAttribute 获取值:

<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 显示名称:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2011-06-24
    • 2011-05-12
    • 2021-12-12
    • 2012-03-04
    • 2011-03-03
    相关资源
    最近更新 更多