■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
|
|