[英]Problem with for each node in xml (vb.net)
The node.SelectSingleNode function retrieves data only from the first iteration. node.SelectSingleNode 函数仅从第一次迭代中检索数据。 The values remain the same in the next iteration.这些值在下一次迭代中保持不变。 When I check the node object, I see that it changes its data as every iteration.当我检查节点对象时,我看到它在每次迭代时都会更改其数据。
My code:我的代码:
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
Nodes change text, but parameters which I try get have value from first node (for example status).节点更改文本,但我尝试从第一个节点获取的参数具有值(例如状态)。
xml attached附上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>
I found a solution.我找到了解决方案。 I took a value from the whole xml, instead of just from a specific area.我从整个 xml 中取值,而不仅仅是从特定区域中取值。
status = node.SelectSingleNode("descendant::status").InnerText
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.