繁体   English   中英

xml中每个节点的问题(vb.net)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM