1
如何使用XDocument和Dictionary解析VB.net(2008)中重複的XML子行值。在下面的代碼我能讀到的一切下降到第一行用戶羣組.. 隱藏複製代碼 我得到的第一行中的所有值:如何使用XDocument和Dictionary VB.net 2008從XML中讀取多個子行值
「XX1」「羣主」,「111」 「NORMAL」「/ AAA/XX1/NANA」
我不知道如何遍歷剩餘的userGroup行以獲取剩餘的值。 我需要從userGroup開始的所有行中的所有值。
<userGroup id="XX1" title="MAIN GROUP" orgCode="111" type="NORMAL" fullPath="/AAA/XX1/NANA"/>
<userGroup id="ABC" title="Test Group1" orgCode="ABC-123" type="NORMAL" fullPath="/ABC/"/>
<userGroup id="XX2" title="Test Group2" orgCode="QRX-567" type="NORMAL" fullPath="/AAA/XX2/"/>
<userGroup id="XX5" title="Test Group3" orgCode="BB1" type="NORMAL" fullPath="/AAA/XX5/BB1"/>
可能有1到多個userGroup行。 我的目標是能夠讀取所有值並將它們存儲到局部變量中。
示例:讀取userGroup行中的所有orgCode值並將它們連接在本地字符串變量中。
strLocal_VARIABLE_All_orgCodes = 「111,ABC-123,QRX-567,BB1」
示例代碼:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim result = ParseXML()
For Each key1 In result.Keys
Console.WriteLine(key1 & " --> " & result(key1))
Next
End Sub
Function ParseXML() As Dictionary(Of String, String)
Dim parseValues = New Dictionary(Of String, String)
Dim doc As XDocument = <?xml version="1.0" encoding="UTF-8"?>
<sslms status="ok" time="0">
<user username="123456" activated="true" userRole="END_USER" isCustomUser="false" selfReg="false" regDate="2015-01-17T20:08:30Z" siteLanguage="en-US" searchLanguage="en">
<profileFieldValues>
<fieldValue id="_sys_firstname">
<value>John</value>
</fieldValue>
<fieldValue id="_sys_lastname">
<value>Doe</value>
</fieldValue>
<fieldValue id="_sys_emailaddress">
<value>[email protected]</value>
</fieldValue>
<fieldValue id="_sys_display_first_name">
<value>John</value>
</fieldValue>
<fieldValue id="_sys_display_last_name">
<value>Doe</value>
</fieldValue>
<fieldValue id="_sys_location">
<value/>
</fieldValue>
<fieldValue id="_sys_image_url">
<value/>
</fieldValue>
<fieldValue id="ccnumber">
<value>NO</value>
</fieldValue>
</profileFieldValues>
<userGroup id="XX1" title="MAIN GROUP" orgCode="111" type="NORMAL" fullPath="/AAA/XX1/NANA"/>
<userGroup id="ABC" title="Test Group1" orgCode="ABC-123" type="NORMAL" fullPath="/ABC/"/>
<userGroup id="XX2" title="Test Group2" orgCode="QRX-567" type="NORMAL" fullPath="/AAA/XX2/"/>
<userGroup id="XX5" title="Test Group3" orgCode="BB1" type="NORMAL" fullPath="/AAA/XX5/BB1"/>
</user>
</sslms>
For Each attr In doc.Element("sslms").Attributes()
parseValues.Add("sslms_" & attr.Name.ToString, attr.Value)
Next
For Each attr In doc.Element("sslms").Element("user").Attributes()
parseValues.Add("user_" & attr.Name.ToString, attr.Value)
Next
For Each ele In doc.Element("sslms").Element("user").Element("profileFieldValues").Elements("fieldValue")
parseValues.Add(ele.Attributes.First.Value.ToString, ele.Element("value").Value)
Next
For Each attr In doc.Element("sslms").Element("user").Element("userGroup").Attributes()
parseValues.Add("userGroup_" & attr.Name.ToString, attr.Value)
Next
Return parseValues
End Function
感謝
@TheITMan有沒有更新?此外,不要忘記[接受](http://stackoverflow.com/help/someone-answers)答案 – har07