尝试反序列化XML文件,但子节点遇到问题。我需要通过那里的ID值来收集这些,例如ConNum,class,recid。目前,我可以取回一个值,但这是给我ID的名称,而不是值。例如:xData.TRAN_DATEX.theTarget = ConNum我需要20190910代替。
这是XML:
<?xml version="1.0" encoding="UTF-8"?>
<targets>
<target id="ConNum">20190910</target>
<target id="class">Third</target>
<target id="recid">123 </target>
</targets>
这是我的课:
Imports System.Xml.Serialization
<Serializable, XmlRoot("targets")>
Public Class XmlFile
<XmlElement("target")> Public Property TRAN_DATEX As myTarget
End Class
<Serializable, XmlRoot("target")>
Public Class myTarget
<XmlAttribute("id")> Public theTarget As String
End Class
这是反序列化方法:
Dim fFile As FileInfo = New FileInfo("C:\Temp\TARGETS.metadata")
Dim s As New XmlSerializer(GetType(XmlFile))
Using sr As New StreamReader(fFile.FullName)
xData = s.Deserialize(sr)
Stop
End Using
theTarget
正在获取id
属性的值。您需要该XmlText
元素的:
<Serializable, XmlRoot("target")>
Public Class myTarget
<XmlAttribute("id")> Public theTarget As String
<XmlText> Public Property theValue As String
End Class
然后,xData.TRAN_DATEX.theTarget
您可以使用代替xData.TRAN_DATEX.theValue
编辑:响应评论。
由于有多个<target>
元素,TRAN_DATEX
因此需要一个列表:
<Serializable, XmlRoot("targets")>
Public Class XmlFile
<XmlElement("target")> Public Property TRAN_DATEX As New List(Of myTarget)
End Class
LINQ可用于访问所需的数据:
Dim reqValueTarget = xData.TRAN_DATEX.FirstOrDefault(Function(x) x.theTarget = "ConNum")
If reqValueTarget IsNot Nothing then
Dim reqValue = reqValueTarget.theValue
End If
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句