簡體   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