操作XML文件的又一个方便的方法!
首先使用Vs.net 2003 Tools菜单中的connect to DataBase 命令连接到数据库(以本地数据库为例),然后你可以看到本地数据库中的相应的表结构,这里我建立一个users表。然后再建立一个Dataset实体,如图所示:
![]()
然后从Server Explorer 中拖拽users对象到Dataset视图中去,这时能看到视图中有一个users表的结构,然后点击保存。这时默认是自动生成Dataset的代理类。你可以把隐藏的文件都显示出来,然后看Dataset的cs文件,这个就是他的代理类。代码如下:
![]()
dataset代理类
1
//------------------------------------------------------------------------------
2
// <autogenerated>
3
// This code was generated by a tool.
4
// Runtime Version: 1.1.4322.2300
5
//
6
// Changes to this file may cause incorrect behavior and will be lost if
7
// the code is regenerated.
8
// </autogenerated>
9
//------------------------------------------------------------------------------
10![]()
11![]()
namespace TestXsd
{
12
using System;
13
using System.Data;
14
using System.Xml;
15
using System.Runtime.Serialization;
16
17
18
[Serializable()]
19
[System.ComponentModel.DesignerCategoryAttribute("code")]
20
[System.Diagnostics.DebuggerStepThrough()]
21
[System.ComponentModel.ToolboxItem(true)]
22![]()
public class Dataset2 : DataSet
{
23
24
private usersDataTable tableusers;
25
26![]()
public Dataset2()
{
27
this.InitClass();
28
System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
29
this.Tables.CollectionChanged += schemaChangedHandler;
30
this.Relations.CollectionChanged += schemaChangedHandler;
31
}
32
33![]()
protected Dataset2(SerializationInfo info, StreamingContext context)
{
34
string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
35![]()
if ((strSchema != null))
{
36
DataSet ds = new DataSet();
37
ds.ReadXmlSchema(new XmlTextReader(new System.IO.StringReader(strSchema)));
38![]()
if ((ds.Tables["users"] != null))
{
39
this.Tables.Add(new usersDataTable(ds.Tables["users"]));
40
}
41
this.DataSetName = ds.DataSetName;
42
this.Prefix = ds.Prefix;
43
this.Namespace = ds.Namespace;
44
this.Locale = ds.Locale;
45
this.CaseSensitive = ds.CaseSensitive;
46
this.EnforceConstraints = ds.EnforceConstraints;
47
this.Merge(ds, false, System.Data.MissingSchemaAction.Add);
48
this.InitVars();
49
}
50![]()
else
{
51
this.InitClass();
52
}
53
this.GetSerializationData(info, context);
54
System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged);
55
this.Tables.CollectionChanged += schemaChangedHandler;
56
this.Relations.CollectionChanged += schemaChangedHandler;
57
}
58
59
[System.ComponentModel.Browsable(false)]
60
[System.ComponentModel.DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Content)]
61![]()
public usersDataTable users
{
62![]()
get
{
63
return this.tableusers;
64
}
65
}
66
67![]()
public override DataSet Clone()
{
68
Dataset2 cln = ((Dataset2)(base.Clone()));
69
cln.InitVars();
70
return cln;
71
}
72
73![]()
protected override bool ShouldSerializeTables()
{
74
return false;
75
}
76
77![]()
protected override bool ShouldSerializeRelations()
{
78
return false;
79
}
80
81![]()
protected override void ReadXmlSerializable(XmlReader reader)
{
82
this.Reset();
83
DataSet ds = new DataSet();
84
ds.ReadXml(reader);
85![]()
if ((ds.Tables["users"] != null))
{
86
this.Tables.Add(new usersDataTable(ds.Tables["users"]));
87
}
88
this.DataSetName = ds.DataSetName;
89
this.Prefix = ds.Prefix;
90
this.Namespace = ds.Namespace;
91
this.Locale = ds.Locale;
92
this.CaseSensitive = ds.CaseSensitive;
93
this.EnforceConstraints = ds.EnforceConstraints;
94
this.Merge(ds, false, System.Data.MissingSchemaAction.Add);
95
this.InitVars();
96
}
97
98![]()
protected override System.Xml.Schema.XmlSchema GetSchemaSerializable()
{
99
System.IO.MemoryStream stream = new System.IO.MemoryStream();
100
this.WriteXmlSchema(new XmlTextWriter(stream, null));
101
stream.Position = 0;
102
return System.Xml.Schema.XmlSchema.Read(new XmlTextReader(stream), null);
103
}
104
105![]()
internal void InitVars()
{
106
this.tableusers = ((usersDataTable)(this.Tables["users"]));
107![]()
if ((this.tableusers != null))
{
108
this.tableusers.InitVars();
109
}
110
}
111
112![]()
private void InitClass()
{
113
this.DataSetName = "Dataset2";
114
this.Prefix = "";
115
this.Namespace = "http://tempuri.org/Dataset2.xsd";
116
this.Locale = new System.Globalization.CultureInfo("en-US");
117
this.CaseSensitive = false;
118
this.EnforceConstraints = true;
119
this.tableusers = new usersDataTable();
120
this.Tables.Add(this.tableusers);
121
}
122
123![]()
private bool ShouldSerializeusers()
{
124
return false;
125
}
126
127![]()
private void SchemaChanged(object sender, System.ComponentModel.CollectionChangeEventArgs e)
{
128![]()
if ((e.Action == System.ComponentModel.CollectionChangeAction.Remove))
{
129
this.InitVars();
130
}
131
}
132
133
public delegate void usersRowChangeEventHandler(object sender, usersRowChangeEvent e);
134
135
[System.Diagnostics.DebuggerStepThrough()]
136![]()
public class usersDataTable : DataTable, System.Collections.IEnumerable
{
137
138
private DataColumn columnUserID;
139
140
private DataColumn columnUsername;
141
142
private DataColumn columnPassword;
143
144
private DataColumn columnNickname;
145
146
private DataColumn columnEmail;
147
148
private DataColumn columnLastLoginTime;
149
150
private DataColumn columnGroupID;
151
152
private DataColumn columnPoint;
153
154
internal usersDataTable() :
155![]()
base("users")
{
156
this.InitClass();
157
}
158
159
internal usersDataTable(DataTable table) :
160![]()
base(table.TableName)
{
161![]()
if ((table.CaseSensitive != table.DataSet.CaseSensitive))
{
162
this.CaseSensitive = table.CaseSensitive;
163
}
164![]()
if ((table.Locale.ToString() != table.DataSet.Locale.ToString()))
{
165
this.Locale = table.Locale;
166
}
167![]()
if ((table.Namespace != table.DataSet.Namespace))
{
168
this.Namespace = table.Namespace;
169
}
170
this.Prefix = table.Prefix;
171
this.MinimumCapacity = table.MinimumCapacity;
172
this.DisplayExpression = table.DisplayExpression;
173
}
174
175
[System.ComponentModel.Browsable(false)]
176![]()
public int Count
{
177![]()
get
{
178
return this.Rows.Count;
179
}
180
}
181
182![]()
internal DataColumn UserIDColumn
{
183![]()
get
{
184
return this.columnUserID;
185
}
186
}
187
188![]()
internal DataColumn UsernameColumn
{
189![]()
get
{
190
return this.columnUsername;
191
}
192
}
193
194![]()
internal DataColumn PasswordColumn
{
195![]()
get
{
196
return this.columnPassword;
197
}
198
}
199
200![]()
internal DataColumn NicknameColumn
{
201![]()
get
{
202
return this.columnNickname;
203
}
204
}
205
206![]()
internal DataColumn EmailColumn
{
207![]()
get
{
208
return this.columnEmail;
209
}
210
}
211
212![]()
internal DataColumn LastLoginTimeColumn
{
213![]()
get
{
214
return this.columnLastLoginTime;
215
}
216
}
217
218![]()
internal DataColumn GroupIDColumn
{
219![]()
get
{
220
return this.columnGroupID;
221
}
222
}
223
224![]()
internal DataColumn PointColumn
{
225![]()
get
{
226
return this.columnPoint;
227
}
228
}
229
230![]()
public usersRow this[int index]
{
231![]()
get
{
232
return ((usersRow)(this.Rows[index]));
233
}
234
}
235
236
public event usersRowChangeEventHandler usersRowChanged;
237
238
public event usersRowChangeEventHandler usersRowChanging;
239
240
public event usersRowChangeEventHandler usersRowDeleted;
241
242
public event usersRowChangeEventHandler usersRowDeleting;
243
244![]()
public void AddusersRow(usersRow row)
{
245
this.Rows.Add(row);
246
}
247
248![]()
public usersRow AddusersRow(string Username, string Password, string Nickname, string Email, System.DateTime LastLoginTime, short GroupID, int Point)
{
249
usersRow rowusersRow = ((usersRow)(this.NewRow()));
250![]()
rowusersRow.ItemArray = new object[]
{
251
null,
252
Username,
253
Password,
254
Nickname,
255
Email,
256
LastLoginTime,
257
GroupID,
258
Point};
259
this.Rows.Add(rowusersRow);
260
return rowusersRow;
261
}
262
263![]()
public usersRow FindByUserID(int UserID)
{
264![]()
return ((usersRow)(this.Rows.Find(new object[]
{
265
UserID})));
266
}
267
268![]()
public System.Collections.IEnumerator GetEnumerator()
{
269
return this.Rows.GetEnumerator();
270
}
271
272![]()
public override DataTable Clone()
{
273
usersDataTable cln = ((usersDataTable)(base.Clone()));
274
cln.InitVars();
275
return cln;
276
}
277
278![]()
protected override DataTable CreateInstance()
{
279
return new usersDataTable();
280
}
281
282![]()
internal void InitVars()
{
283
this.columnUserID = this.Columns["UserID"];
284
this.columnUsername = this.Columns["Username"];
285
this.columnPassword = this.Columns["Password"];
286
this.columnNickname = this.Columns["Nickname"];
287
this.columnEmail = this.Columns["Email"];
288
this.columnLastLoginTime = this.Columns["LastLoginTime"];
289
this.columnGroupID = this.Columns["GroupID"];
290
this.columnPoint = this.Columns["Point"];
291
}
292
293![]()
private void InitClass()
{
294
this.columnUserID = new DataColumn("UserID", typeof(int), null, System.Data.MappingType.Element);
295
this.Columns.Add(this.columnUserID);
296
this.columnUsername = new DataColumn("Username", typeof(string), null, System.Data.MappingType.Element);
297
this.Columns.Add(this.columnUsername);
298
this.columnPassword = new DataColumn("Password", typeof(string), null, System.Data.MappingType.Element);
299
this.Columns.Add(this.columnPassword);
300
this.columnNickname = new DataColumn("Nickname", typeof(string), null, System.Data.MappingType.Element);
301
this.Columns.Add(this.columnNickname);
302
this.columnEmail = new DataColumn("Email", typeof(string), null, System.Data.MappingType.Element);
303
this.Columns.Add(this.columnEmail);
304
this.columnLastLoginTime = new DataColumn("LastLoginTime", typeof(System.DateTime), null, System.Data.MappingType.Element);
305
this.Columns.Add(this.columnLastLoginTime);
306
this.columnGroupID = new DataColumn("GroupID", typeof(short), null, System.Data.MappingType.Element);
307
this.Columns.Add(this.columnGroupID);
308
this.columnPoint = new DataColumn("Point", typeof(int), null, System.Data.MappingType.Element);
309
this.Columns.Add(this.columnPoint);
310![]()
this.Constraints.Add(new UniqueConstraint("Dataset2Key1", new DataColumn[]
{
311
this.columnUserID}, true));
312
this.columnUserID.AutoIncrement = true;
313
this.columnUserID.AllowDBNull = false;
314
this.columnUserID.ReadOnly = true;
315
this.columnUserID.Unique = true;
316
this.columnLastLoginTime.AllowDBNull = false;
317
this.columnGroupID.AllowDBNull = false;
318
this.columnPoint.AllowDBNull = false;
319
}
320
321![]()
public usersRow NewusersRow()
{
322
return ((usersRow)(this.NewRow()));
323
}
324
325![]()
protected override DataRow NewRowFromBuilder(DataRowBuilder builder)
{
326
return new usersRow(builder);
327
}
328
329![]()
protected override System.Type GetRowType()
{
330
return typeof(usersRow);
331
}
332
333![]()
protected override void OnRowChanged(DataRowChangeEventArgs e)
{
334
base.OnRowChanged(e);
335![]()
if ((this.usersRowChanged != null))
{
336
this.usersRowChanged(this, new usersRowChangeEvent(((usersRow)(e.Row)), e.Action));
337
}
338
}
339
340![]()
protected override void OnRowChanging(DataRowChangeEventArgs e)
{
341
base.OnRowChanging(e);
342![]()
if ((this.usersRowChanging != null))
{
343
this.usersRowChanging(this, new usersRowChangeEvent(((usersRow)(e.Row)), e.Action));
344
}
345
}
346
347![]()
protected override void OnRowDeleted(DataRowChangeEventArgs e)
{
348
base.OnRowDeleted(e);
349![]()
if ((this.usersRowDeleted != null))
{
350
this.usersRowDeleted(this, new usersRowChangeEvent(((usersRow)(e.Row)), e.Action));
351
}
352
}
353
354![]()
protected override void OnRowDeleting(DataRowChangeEventArgs e)
{
355
base.OnRowDeleting(e);
356![]()
if ((this.usersRowDeleting != null))
{
357
this.usersRowDeleting(this, new usersRowChangeEvent(((usersRow)(e.Row)), e.Action));
358
}
359
}
360
361![]()
public void RemoveusersRow(usersRow row)
{
362
this.Rows.Remove(row);
363
}
364
}
365
366
[System.Diagnostics.DebuggerStepThrough()]
367![]()
public class usersRow : DataRow
{
368
369
private usersDataTable tableusers;
370
371
internal usersRow(DataRowBuilder rb) :
372![]()
base(rb)
{
373
this.tableusers = ((usersDataTable)(this.Table));
374
}
375
376![]()
public int UserID
{
377![]()
get
{
378
return ((int)(this[this.tableusers.UserIDColumn]));
379
}
380![]()
set
{
381
this[this.tableusers.UserIDColumn] = value;
382
}
383
}
384
385![]()
public string Username
{
386![]()
get
{
387![]()
try
{
388
return ((string)(this[this.tableusers.UsernameColumn]));
389
}
390![]()
catch (InvalidCastException e)
{
391
throw new StrongTypingException("Cannot get value because it is DBNull.", e);
392
}
393
}
394![]()
set
{
395
this[this.tableusers.UsernameColumn] = value;
396
}
397
}
398
399![]()
public string Password
{
400![]()
get
{
401![]()
try
{
402
return ((string)(this[this.tableusers.PasswordColumn]));
403
}
404![]()
catch (InvalidCastException e)
{
405
throw new StrongTypingException("Cannot get value because it is DBNull.", e);
406
}
407
}
408![]()
set
{
409
this[this.tableusers.PasswordColumn] = value;
410
}
411
}
412
413![]()
public string Nickname
{
414![]()
get
{
415![]()
try
{
416
return ((string)(this[this.tableusers.NicknameColumn]));
417
}
418![]()
catch (InvalidCastException e)
{
419
throw new StrongTypingException("Cannot get value because it is DBNull.", e);
420
}
421
}
422![]()
set
{
423
this[this.tableusers.NicknameColumn] = value;
424
}
425
}
426
427![]()
public string Email
{
428![]()
get
{
429![]()
try
{
430
return ((string)(this[this.tableusers.EmailColumn]));
431
}
432![]()
catch (InvalidCastException e)
{
433
throw new StrongTypingException("Cannot get value because it is DBNull.", e);
434
}
435
}
436![]()
set
{
437
this[this.tableusers.EmailColumn] = value;
438
}
439
}
440
441![]()
public System.DateTime LastLoginTime
{
442![]()
get
{
443
return ((System.DateTime)(this[this.tableusers.LastLoginTimeColumn]));
444
}
445![]()
set
{
446
this[this.tableusers.LastLoginTimeColumn] = value;
447
}
448
}
449
450![]()
public short GroupID
{
451![]()
get
{
452
return ((short)(this[this.tableusers.GroupIDColumn]));
453
}
454![]()
set
{
455
this[this.tableusers.GroupIDColumn] = value;
456
}
457
}
458
459![]()
public int Point
{
460![]()
get
{
461
return ((int)(this[this.tableusers.PointColumn]));
462
}
463![]()
set
{
464
this[this.tableusers.PointColumn] = value;
465
}
466
}
467
468![]()
public bool IsUsernameNull()
{
469
return this.IsNull(this.tableusers.UsernameColumn);
470
}
471
472![]()
public void SetUsernameNull()
{
473
this[this.tableusers.UsernameColumn] = System.Convert.DBNull;
474
}
475
476![]()
public bool IsPasswordNull()
{
477
return this.IsNull(this.tableusers.PasswordColumn);
478
}
479
480![]()
public void SetPasswordNull()
{
481
this[this.tableusers.PasswordColumn] = System.Convert.DBNull;
482
}
483
484![]()
public bool IsNicknameNull()
{
485
return this.IsNull(this.tableusers.NicknameColumn);
486
}
487
488![]()
public void SetNicknameNull()
{
489
this[this.tableusers.NicknameColumn] = System.Convert.DBNull;
490
}
491
492![]()
public bool IsEmailNull()
{
493
return this.IsNull(this.tableusers.EmailColumn);
494
}
495
496![]()
public void SetEmailNull()
{
497
this[this.tableusers.EmailColumn] = System.Convert.DBNull;
498
}
499
}
500
501
[System.Diagnostics.DebuggerStepThrough()]
502![]()
public class usersRowChangeEvent : EventArgs
{
503
504
private usersRow eventRow;
505
506
private DataRowAction eventAction;
507
508![]()
public usersRowChangeEvent(usersRow row, DataRowAction action)
{
509
this.eventRow = row;
510
this.eventAction = action;
511
}
512
513![]()
public usersRow Row
{
514![]()
get
{
515
return this.eventRow;
516
}
517
}
518
519![]()
public DataRowAction Action
{
520![]()
get
{
521
return this.eventAction;
522
}
523
}
524
}
525
}
526
}
527
你可以用代理类提供的方法方便的对xml文件进行操作,代码如下:
然后从Server Explorer 中拖拽users对象到Dataset视图中去,这时能看到视图中有一个users表的结构,然后点击保存。这时默认是自动生成Dataset的代理类。你可以把隐藏的文件都显示出来,然后看Dataset的cs文件,这个就是他的代理类。代码如下:


1

2

3

4

5

6

7

8

9

10

11



12

13

14

15

16

17

18

19

20

21

22



23

24

25

26



27

28

29

30

31

32

33



34

35



36

37

38



39

40

41

42

43

44

45

46

47

48

49

50



51

52

53

54

55

56

57

58

59

60

61



62



63

64

65

66

67



68

69

70

71

72

73



74

75

76

77



78

79

80

81



82

83

84

85



86

87

88

89

90

91

92

93

94

95

96

97

98



99

100

101

102

103

104

105



106

107



108

109

110

111

112



113

114

115

116

117

118

119

120

121

122

123



124

125

126

127



128



129

130

131

132

133

134

135

136



137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155



156

157

158

159

160



161



162

163

164



165

166

167



168

169

170

171

172

173

174

175

176



177



178

179

180

181

182



183



184

185

186

187

188



189



190

191

192

193

194



195



196

197

198

199

200



201



202

203

204

205

206



207



208

209

210

211

212



213



214

215

216

217

218



219



220

221

222

223

224



225



226

227

228

229

230



231



232

233

234

235

236

237

238

239

240

241

242

243

244



245

246

247

248



249

250



251

252

253

254

255

256

257

258

259

260

261

262

263



264



265

266

267

268



269

270

271

272



273

274

275

276

277

278



279

280

281

282



283

284

285

286

287

288

289

290

291

292

293



294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310



311

312

313

314

315

316

317

318

319

320

321



322

323

324

325



326

327

328

329



330

331

332

333



334

335



336

337

338

339

340



341

342



343

344

345

346

347



348

349



350

351

352

353

354



355

356



357

358

359

360

361



362

363

364

365

366

367



368

369

370

371

372



373

374

375

376



377



378

379

380



381

382

383

384

385



386



387



388

389

390



391

392

393

394



395

396

397

398

399



400



401



402

403

404



405

406

407

408



409

410

411

412

413



414



415



416

417

418



419

420

421

422



423

424

425

426

427



428



429



430

431

432



433

434

435

436



437

438

439

440

441



442



443

444

445



446

447

448

449

450



451



452

453

454



455

456

457

458

459



460



461

462

463



464

465

466

467

468



469

470

471

472



473

474

475

476



477

478

479

480



481

482

483

484



485

486

487

488



489

490

491

492



493

494

495

496



497

498

499

500

501

502



503

504

505

506

507

508



509

510

511

512

513



514



515

516

517

518

519



520



521

522

523

524

525

526

527

你可以用代理类提供的方法方便的对xml文件进行操作,代码如下:
1
Dataset2 ds = new Dataset2() ;
2
ds.ReadXml("test.xml") ;
3
4
Dataset2.usersRow row = ds.users.NewusersRow() ;
5
row.Username="test";
6
row.Email ="test@test.com";
7
row.Password ="test";
8
row.Nickname ="test";
9
row.LastLoginTime =DateTime.Now ;
10
row.GroupID =1;
11
row.Point =100;
12
ds.users.AddusersRow(row) ;
13![]()
14
ds.WriteXml("test.xml") ;

2

3

4

5

6

7

8

9

10

11

12

13

14

这种方法非常方便,使用拖拽的方式生成xml schemal ,当然事先你也可以自己定义好schemal后 ,再生成代理类,偶是个懒人觉得这种方式比较适合我!如果你有什么好的想法都可以回复到下面!