[英]VB.net read XML
有人可以幫助我如何用他的格式讀取xml中的值嗎?
下面是示例xml 。 我需要得到以下內容:
>id = 4ebc-9c89
>employeeidnumber = 12345
>name = Smith, John
>weekday = 31/10/2016
>reason = VL
>weekday = 1/11/2016
>reason = VL
>id = 35bc-9c89
>employeeidnumber = 54321
>name = Smith, Jane
>weekday = 1/11/2016
>reason = VL*
如果員工申請兩次或更多次休假,該計划應該得到他/她的全部假期。
<employeeleaverequest>
<leaverequest>
<id>4ebc-9c89</id>
<employeeidnumber>12345</employeeidnumber>
<name>Smith, John</name>
<company name="ABC Company">42b8</company>
<position name="08">-d00077504</position>
<dayleaverequest>
<weekday date="31/10/2016">2</weekday>
<segments>
<segment>
<id>ae2f2c</id>
<hours>8</hours>
<reason name="Vacation Leave">VL</reason>
<status>1</status>
</segment>
</segments>
</dayleaverequest>
<dayleaverequest>
<weekday date="1/11/2016">3</weekday>
<segments>
<segment>
<id>96898</id>
<hours>8</hours>
<reason name="Vacation Leave">VL</reason>
<status>1</status>
</segment>
</segments>
</dayleaverequest>
</leaverequest>
<leaverequest>
<id>35bc-9c89</id>
<employeeidnumber>54321</employeeidnumber>
<name>Smith, Jane</name>
<company name="ABC Company">42b8</company>
<position name="08">-d00077504</position>
<dayleaverequest>
<weekday date="1/11/2016">2</weekday>
<segments>
<segment>
<id>ae333c</id>
<hours>8</hours>
<reason name="Vacation Leave">VL</reason>
<status>1</status>
</segment>
</segments>
</dayleaverequest>
</leaverequest>
</employeeleaverequest>
到目前為止,這是我的代碼。
For Each Node As XmlElement In nodelist
strId = Node("id").InnerText
strNumber = Node("employeeidnumber").InnerText
strName = Node("name").InnerText
Dim sLeaveDay As XmlNode = >Node.SelectSingleNode("dayleaverequest")
If strLeaveDay IsNot Nothing Then
strLeaveDay = >sLeaveDay("weekday").Attributes.ItemOf("date").InnerText
End If
Dim sSegments As XmlNode = >Node.SelectSingleNode>("dayleaverequest/segments/segment")
If sSegments IsNot Nothing Then
strReason = sSegments("reason").InnerText
End If
MessageBox.Show(strId & "|" & strNumber & "|" & strName & >"|" & strLeaveDay & "|" & strReason)
Next
試試xml linq:
Imports System.Xml
Imports System.Xml.Linq
Module Module1
Const FILENAME As String = "c:\temp\test.xml"
Sub Main()
Dim doc As XDocument = XDocument.Load(FILENAME)
Dim leaverequests = doc.Descendants("leaverequest").Select(Function(x) New With {
.id = x.Element("id"),
.employeeidnumber = x.Element("employeeidnumber"),
.name = x.Element("name"),
.company = x.Element("company"),
.postition = x.Element("position"),
.dayleaverequest = x.Elements("dayleaverequest").Select(Function(y) New With {
.weekday = y.Element("weekday").Value,
.date = y.Element("weekday").Attribute("date"),
.id = y.Descendants("id").FirstOrDefault(),
.hours = y.Descendants("hours").FirstOrDefault(),
.reason = y.Descendants("reason").Select(Function(z) CType(z.Value, String)).FirstOrDefault(),
.name = y.Descendants("reason").FirstOrDefault().Attribute("name").Value,
.status = y.Descendants("status").FirstOrDefault()
}).ToList()
}).ToList()
End Sub
End Module
我能夠解決自己的問題。
這是解決我的問題的代碼。 我剛剛聲明變量來閱讀dayleaverequest。 然后我用它上面的每個循環。
對於每個節點作為節點列表中的XmlElement strId =節點(“id”)。InnerText strNumber =節點(“employeeidnumber”)。InnerText strName =節點(“name”)。InnerText
Dim InnerNodeList As XmlNodeList = Node.SelectNodes("dayleaverequest")
'loop through InnerNodeList(dayleaverequest)
For Each InnerNode As XmlNode In InnerNodeList
strLeaveDay = InnerNode("weekday").Attributes.ItemOf("date").InnerText
Dim sSegments As XmlNode = Node.SelectSingleNode("dayleaverequest/segments/segment")
If sSegments IsNot Nothing Then
strReason = sSegments("reason").InnerText
End If
MessageBox.Show(strId & "|" & strNumber & "|" & strName & >"|" & strLeaveDay & "|" & strReason)
Next
下一個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.