回答編集履歴

1

サンプルコード

2017/05/23 08:30

投稿

tamoto
tamoto

スコア4105

test CHANGED
@@ -11,3 +11,161 @@
11
11
 
12
12
 
13
13
  XMLを「データソース」と見なしてそれを読み込む用途であれば、`XElement`クラスとその周辺(System.Xml.Linq名前空間)の利用をオススメします。こちらはXMLの「解析」「読み込み」を行うものなので、マッピング操作そのものを自分で書くことができます。
14
+
15
+
16
+
17
+ ---
18
+
19
+
20
+
21
+ 追記:
22
+
23
+
24
+
25
+ Linq to XMLを使用してXMLを読み込むサンプルを書いてみました。
26
+
27
+ 丸ごとコピーでコンパイル/実行可能なようにしてあります。
28
+
29
+
30
+
31
+ 質問のXMLデータをそのまま使用しています。が、XMLを書く時はインデントルールを決めて間違いなく記述することで、全体の構造を把握しやすくなります。
32
+
33
+ ```xml
34
+
35
+ <?xml version="1.0" encoding="UTF-8"?>
36
+
37
+ <Audit xmlns="http://xxx"
38
+
39
+ xmlns:xsi="http://yyy"
40
+
41
+ xsi:schemaLocation="zzz">
42
+
43
+ <Version>11.2</Version>
44
+
45
+ <AuditRecord>
46
+
47
+ <Audit_Type>1</Audit_Type>
48
+
49
+ </AuditRecord>
50
+
51
+ <AuditRecord>
52
+
53
+ <Audit_Type>1</Audit_Type>
54
+
55
+ </AuditRecord>
56
+
57
+ <AuditRecord>
58
+
59
+ <Audit_Type>1</Audit_Type>
60
+
61
+ </AuditRecord>
62
+
63
+ <AuditRecord>
64
+
65
+ <Audit_Type>1</Audit_Type>
66
+
67
+ </AuditRecord>
68
+
69
+ <AuditRecord>
70
+
71
+ <Audit_Type>1</Audit_Type>
72
+
73
+ </AuditRecord>
74
+
75
+ </Audit>
76
+
77
+ ```
78
+
79
+
80
+
81
+ マッピングクラスは不要なので、AuditRecordクラスしか残りませんでした。
82
+
83
+ 他にも必要なデータがあれば、Root(xml変数)から好きなように掘ってください。
84
+
85
+ ```csharp
86
+
87
+ using System;
88
+
89
+ using System.Linq;
90
+
91
+ using System.Xml.Linq;
92
+
93
+
94
+
95
+ namespace ReadingXML
96
+
97
+ {
98
+
99
+ class Program
100
+
101
+ {
102
+
103
+ static void Main(string[] args)
104
+
105
+ {
106
+
107
+ var filePath = @"test.xml";
108
+
109
+
110
+
111
+ // xmlをロード
112
+
113
+ var xml = XElement.Load(filePath);
114
+
115
+ var ns = xml.GetDefaultNamespace(); // namespace
116
+
117
+
118
+
119
+ // AuditRecordエレメントを全て取得
120
+
121
+ var xmlRecords = xml.Elements(ns + "AuditRecord");
122
+
123
+
124
+
125
+ // AuditRecordオブジェクトに変換
126
+
127
+ var records = xmlRecords.Select(record => new AuditRecord
128
+
129
+ {
130
+
131
+ Audit_Type = record.Element(ns + "Audit_Type").Value,
132
+
133
+ // XXX = record.Element(ns + "xxx").Value,
134
+
135
+ // YYY = ...
136
+
137
+ }).ToList();
138
+
139
+
140
+
141
+ // 出力テスト
142
+
143
+ foreach (var record in records)
144
+
145
+ Console.WriteLine(record.Audit_Type); // 1, 1, 1, 1, 1
146
+
147
+ }
148
+
149
+
150
+
151
+ public class AuditRecord
152
+
153
+ {
154
+
155
+ public String Audit_Type { get; set; }
156
+
157
+
158
+
159
+ // public String XXX { get; set; }
160
+
161
+
162
+
163
+ // public String YYY...
164
+
165
+ }
166
+
167
+ }
168
+
169
+ }
170
+
171
+ ```