[英]Problem with for each node in xml (vb.net)
node.SelectSingleNode 函數僅從第一次迭代中檢索數據。 這些值在下一次迭代中保持不變。 當我檢查節點對象時,我看到它在每次迭代時都會更改其數據。
我的代碼:
Function readDataFromXML(xmlString As String)
Dim xmldoc As New System.Xml.XmlDocument
Dim status As String
xmldoc.LoadXml(xmlString)
' Console.WriteLine(xmlString)
'for each dokumentyEzla
Dim dataWygenerowania As String = xmldoc.SelectSingleNode("//dataWygenerowania").InnerText
Dim adresEmail As String = xmldoc.SelectSingleNode("//adresEmail").InnerText
Dim nodes As XmlNodeList = xmldoc.SelectNodes("/raportEzla/dokumentyEzla")
Console.WriteLine(nodes.Count)
For Each node As XmlNode In nodes
Console.WriteLine(node.InnerXml)
status = node.SelectSingleNode("//status").InnerText
Console.WriteLine(vbNewLine & status)
status = ""
Next node
End Function
節點更改文本,但我嘗試從第一個節點獲取的參數具有值(例如狀態)。
附上xml
<?xml version="1.0"?>
<raportEzla>
<daneRaportu>
<dataWygenerowania>2018-08-01</dataWygenerowania>
<adresEmail>użytkownik.testowy@zus.pl</adresEmail>
<platnik>
<nip>1112223344</nip>
<nazwaSkrocona>Nazwa Skrocona Platnika</nazwaSkrocona>
<identyfikator>
<typ>D</typ>
<wartosc/>
</identyfikator>
</platnik>
<typRaportu>Jednorazowy</typRaportu>
<zakresDokumentow>Raport jednorazowy, dla dokumentów Wystawione w okresie: od 2018-03-01 do 2018-05-31</zakresDokumentow>
<dolaczDokumentyXml>false</dolaczDokumentyXml>
<liczbaDokumentowEzla>3</liczbaDokumentowEzla>
</daneRaportu>
<dokumentyEzla>
<daneUbezpieczonego>
<identyfikator>
<typ>PESEL</typ>
<wartosc/>…<wartosc/>
</identyfikator>
<imie>MARIA</imie>
<nazwisko>NOWAK</nazwisko>
</daneUbezpieczonego>
<daneDokumentu>
<seria>ZZ</seria>
<status>Anulowane</status>
<numer>123456</numer>
<dataWystawienia>2018-04-20</dataWystawienia>
<dataZus>2018-04-20</dataZus>
<okresZwolnienia>
<dataOd>2018-04-20</dataOd>
<dataDo>2018-04-29</dataDo>
</okresZwolnienia>
<okresWSzpitalu>
<dataOd/>
<dataDo/>
</okresWSzpitalu>
<kodChorobyA/>
<kodChorobyB/>
<kodChorobyC/>
<kodChorobyD/>
<kodChorobyE/>
<wskazaniaLekarskie>2</wskazaniaLekarskie>
<miejsceUbezpieczenia>1</miejsceUbezpieczenia>
<czyAnulowane/>
<kodPokrewienstwa/>
<dataUrodzeniaOsoby/>
</daneDokumentu>
</dokumentyEzla>
<dokumentyEzla>
<daneUbezpieczonego>
<identyfikator>
<typ>PESEL</typ>
<wartosc/>…<wartosc/>
</identyfikator>
<imie>JAN</imie>
<nazwisko>KOWALSKI</nazwisko>
</daneUbezpieczonego>
<daneDokumentu>
<seria>ZZ</seria>
<status>Skorygowane</status>
<numer>101001</numer>
<dataWystawienia>2018-04-20</dataWystawienia>
<dataZus>2018-04-20</dataZus>
<okresZwolnienia>
<dataOd>2018-04-21</dataOd>
<dataDo>2018-04-30</dataDo>
</okresZwolnienia>
<okresWSzpitalu>
<dataOd/>
<dataDo/>
</okresWSzpitalu>
<kodChorobyA/>
<kodChorobyB/>
<kodChorobyC/>
<kodChorobyD/>
<kodChorobyE/>
<wskazaniaLekarskie>1</wskazaniaLekarskie>
<miejsceUbezpieczenia>1</miejsceUbezpieczenia>
<czyAnulowane/>
<kodPokrewienstwa/>
<dataUrodzeniaOsoby/>
</daneDokumentu>
</dokumentyEzla>
<dokumentyEzla>
<daneUbezpieczonego>
<identyfikator>
<typ>PESEL</typ>
<wartosc/>…<wartosc/>
</identyfikator>
<imie>SYLWIA</imie>
<nazwisko>ZIMOCH</nazwisko>
</daneUbezpieczonego>
<daneDokumentu>
<seria>ZZ</seria>
<status>Wystawione</status>
<numer>123456</numer>
<dataWystawienia>2018-04-20</dataWystawienia>
<dataZus>2018-04-20</dataZus>
<okresZwolnienia>
<dataOd>2018-04-20</dataOd>
<dataDo>2018-04-27</dataDo>
</okresZwolnienia>
<okresWSzpitalu>
<dataOd/>
<dataDo/>
</okresWSzpitalu>
<kodChorobyA/>
<kodChorobyB/>
<kodChorobyC/>
<kodChorobyD/>
<kodChorobyE/>
<wskazaniaLekarskie>1</wskazaniaLekarskie>
<miejsceUbezpieczenia>1</miejsceUbezpieczenia>
<czyAnulowane/>Nie<czyAnulowane/>
<kodPokrewienstwa/>
<dataUrodzeniaOsoby/>
</daneDokumentu>
</dokumentyEzla>
</raportEzla>
我找到了解決方案。 我從整個 xml 中取值,而不僅僅是從特定區域中取值。
status = node.SelectSingleNode("descendant::status").InnerText
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.