C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 145 を表示中)
■84796 / )  Re[2]: XMLファイルの読み込み
□投稿者/ なめこ (2回)-(2017/08/02(Wed) 20:53:54)
No84729 (魔界の仮面弁士 さん) に返信
> ■No84721 (なめこ さん) に返信
皆様ご返信いただきましてありがとうございました。
魔界の仮面弁士様のコメントが一番丁寧にわかりやすく解説いただきましたので
その方法でコーディングしてみました。
<Common>の下のノードは取得できましたが、
要素数分ループする際に要素数分処理されてしまいます。
コーディングが間違っているのでしょうか。
>            If dic.ContainsKey("ReportCnt") Then
>                GMX_IniImgFileName = dic("ReportCnt") ←ここに要素数分入る
>            End If
また<ReportNo>の下は取得できたのですが、
<ReportName>のみ取得できません。全角等が含まれているからでしょうか。
お手数ですが押していただけると助かります。

【XML】
 <Environment>
     <Common>
         <ReportCnt>11</ReportCnt>
     </Common>
     <ReportSET>
         <ReportNo kID="1">
             <ReptNo>0002</ReptNo>
             <ReportName>Aテスト</ReportName>
             <Orientation>2</Orientation>
           </ReportNo>
      </ReportSET>
</Environment>
ソース
Public RptNo(99) As String
Public RepReportName(99) As String

        Dim doc = XDocument.Load(AppPath)
        Dim Commons = doc.<Environment>.<Common>.Elements()
        Dim dic = Commons.ToDictionary(Function(x) x.Name, Function(x) x.Value)
        For i As Integer = 0 To dic.Count - 1
            If dic.ContainsKey("ReportCnt") Then
                GMX_IniImgFileName = dic("ReportCnt") 
            End If
        Next
        Dim q = From reportNo In doc.<Environment>.<ReportSET>.<ReportNo>
         Select New With {
             Key .ID = CInt(reportNo.@kID),
             Key .No = reportNo.<ReptNo>.Value,
             Key .Name = reportNo.<RepReportName>.Value,
             Key .Orientation = CInt(reportNo.<Orientation>.Value)
         }
        For Each reportNo In q
            RptNo(WX_i) = CStr(reportNo.No)
            RepReportName(WX_i) = reportNo.Name
            WX_i = WX_i + 1
        Next

返信 編集キー/


管理者用

- Child Tree -