VB.NET で XML ファイルを読む例なぞ[プログラミング]
(2022-03-10 14:51:11) by shinoda


< ページ移動: 1 2 3 4 >

0001|あああ支店|202203090001|2300|01|A0001|あらら電池|25|40|1000
0001|あああ支店|202203090001|2300|02|A0981|小型クリーナー|1300|1|1300
0001|あああ支店|202203090002110500|01|B0055|ふんどし型カツラ|100|105|10500
0003|ううう支店|202203090201|10500|01|B0055|ふんどし型カツラ|100|105|10500

まず、XML ファイルを読み込む(Imports System.Xml は忘れずに)。

        Dim jd As New XmlDocument()

        Try
            jd.Load("受信ファイル.xml")
        Catch ex As Exception
            'エラー処理
        End Try

で、「ルート要素の取り出し」を。全てのデータの取り込みね。

        Dim xroot As XmlNode
        xroot = jd.DocumentElement

そして、親、子、孫のブロックを順次取り出しながら処理をしていく。
(値をセットしていくテーブルはすでに設定されているってことで。行データを格納するオブジェクトは newRow)

        Dim xlist1 As XmlNodeList   ' <支店別請求>のリスト
        Dim xlist2 As XmlNodeList   ' <請求伝票>のリスト
        Dim xlist3 As XmlNodeList   ' <明細>のリスト
        Dim xnode1 As XmlNode   ' <支店別請求>のリストの中のひとつの<支店別請求>
        Dim xnode2 As XmlNode   ' <請求伝票>のリストの中のひとつの<請求伝票>
        Dim xnode3 As XmlNode   ' <明細>のリストの中のひとつの<明細>

とりあえず親、子、孫の 3階層しかない入れ子なのでそれぞれオブジェクトを設定。もっと階層が深ければ配列にしてもええじゃろう。
また、NULL値とか変なデータは無い前提で。必要なら、
If(String.IsNullOrEmpty(xnode1.SelectSingleNode("支店情報/支店ID").InnerText), "", xnode1.SelectSingleNode("支店情報/支店ID").InnerText)
とかして。
また、全ての項目は必須項目で、必ず全てのタグが存在しているものとする。
        
        xlist1 = xroot.SelectNodes("//支店別請求")

        '<支店別請求>の 1ブロックを読み込む
        For Each xnode1 In xlist1

            w_支店ID = xnode1.SelectSingleNode("支店情報/支店ID").InnerText
            w_支店名 = xnode1.SelectSingleNode("支店情報/支店名").InnerText

            xlist2 = xnode1.SelectNodes("請求伝票")

            '<支店別請求>の中の<請求伝票>の 1ブロックを読み込む
            For Each xnode2 In xlist2

                w_請求ID = xnode2.SelectSingleNode("請求ID").InnerText
                w_請求合計金額 = xnode2.SelectSingleNode("請求合計金額").InnerText

                xlist3 = xnode2.SelectNodes("明細")

                '<請求伝票>の中の<明細>の 1ブロックを読み込む
                For Each xnode3 In xlist3

< ページ移動: 1 2 3 4 >


コメント(1)
TOPへ戻る

Powered by
MT4i 3.0.8