1using System;
2using System.Collections.Generic;
3using System.Text;
4
5using System.Xml.Serialization;
6
7namespace DBSchema2Doc
8{
9 [Serializable]
10 [XmlRoot("Root")]
11 public class Settings
12 {
13 public Settings()
14 {
15
16 }
17 private DefaultSettings m_DefaultSettings;
18 private SavedSettings m_SavedSettings;
19 [XmlElement("DefaultSettings")]
20 public DefaultSettings DefaultSettings
21 {
22 get
23 {
24 return this.m_DefaultSettings;
25 }
26 set
27 {
28 this.m_DefaultSettings = value;
29 }
30 }
31 [XmlElement("SavedSettings")]
32 public SavedSettings SavedSettings
33 {
34 get
35 {
36 return this.m_SavedSettings;
37 }
38 set
39 {
40 this.m_SavedSettings = value;
41 }
42 }
43 public override string ToString()
44 {
45 return this.m_DefaultSettings.ToString();
46 }
47 }
48 [Serializable]
49 public class DefaultSettings
50 {
51 public DefaultSettings()
52 {
53 }
54 private DefaultSetting[] m_DefaultSetting;
55 [XmlElement("DefaultSetting")]
56 public DefaultSetting[] DefaultSetting
57 {
58 get
59 {
60 return this.m_DefaultSetting;
61 }
62 set
63 {
64 this.m_DefaultSetting = value;
65 }
66 }
67 public override string ToString()
68 {
69 string temp = "";
70 foreach (DefaultSetting ds in this.m_DefaultSetting)
71 {
72 temp += "\n" + ds.ToString();
73 }
74 return temp;
75 }
76
77 }
78 [Serializable]
79 public class DefaultSetting
80 {
81 public DefaultSetting()
82 {
83
84 }
85 private string m_name;
86 private string m_value;
87 [XmlAttribute("name")]
88 public string name
89 {
90 get
91 {
92 return this.m_name;
93 }
94 set
95 {
96 this.m_name = value;
97 }
98 }
99 [XmlAttribute("value")]
100 public string value
101 {
102 get
103 {
104 return this.m_value;
105 }
106 set
107 {
108 this.m_value = value;
109 }
110 }
111 public override string ToString()
112 {
113 return string.Format("\n name={0} value={1}", this.m_name, this.m_value);
114 }
115
116 }
117 [Serializable]
118 public class SavedSettings
119 {
120 public SavedSettings()
121 {
122
123 }
124 private SavedSetting[] m_SavedSetting;
125 [XmlElement("SavedSetting")]
126 public SavedSetting[] SavedSetting
127 {
128 get
129 {
130 return this.m_SavedSetting;
131 }
132 set
133 {
134 this.m_SavedSetting = value;
135 }
136 }
137 }
138 [Serializable]
139 public class SavedSetting
140 {
141 public SavedSetting()
142 {
143
144 }
145 private string m_connstr;
146 private string m_DBType;
147 private string m_name;
148 [XmlAttribute("connstr")]
149 public string connstr
150 {
151 get
152 {
153 return this.m_connstr;
154 }
155 set
156 {
157 this.m_connstr = value;
158 }
159 }
160 [XmlAttribute("DBType")]
161 public string DBType
162 {
163 get
164 {
165 return this.m_DBType;
166 }
167 set
168 {
169 this.m_DBType = value;
170 }
171 }
172 [XmlAttribute("name")]
173 public string name
174 {
175 get
176 {
177 return this.m_name;
178 }
179 set
180 {
181 this.m_name = value;
182 }
183 }
184
185 public override string ToString()
186 {
187 return string.Format("\nconnstr={0} DBType={1} name={2}", this.m_connstr, this.m_DBType, this.m_name);
188 }
189 }
190
191
192}
193
2using System.Collections.Generic;
3using System.Text;
4
5using System.Xml.Serialization;
6
7namespace DBSchema2Doc
8{
9 [Serializable]
10 [XmlRoot("Root")]
11 public class Settings
12 {
13 public Settings()
14 {
15
16 }
17 private DefaultSettings m_DefaultSettings;
18 private SavedSettings m_SavedSettings;
19 [XmlElement("DefaultSettings")]
20 public DefaultSettings DefaultSettings
21 {
22 get
23 {
24 return this.m_DefaultSettings;
25 }
26 set
27 {
28 this.m_DefaultSettings = value;
29 }
30 }
31 [XmlElement("SavedSettings")]
32 public SavedSettings SavedSettings
33 {
34 get
35 {
36 return this.m_SavedSettings;
37 }
38 set
39 {
40 this.m_SavedSettings = value;
41 }
42 }
43 public override string ToString()
44 {
45 return this.m_DefaultSettings.ToString();
46 }
47 }
48 [Serializable]
49 public class DefaultSettings
50 {
51 public DefaultSettings()
52 {
53 }
54 private DefaultSetting[] m_DefaultSetting;
55 [XmlElement("DefaultSetting")]
56 public DefaultSetting[] DefaultSetting
57 {
58 get
59 {
60 return this.m_DefaultSetting;
61 }
62 set
63 {
64 this.m_DefaultSetting = value;
65 }
66 }
67 public override string ToString()
68 {
69 string temp = "";
70 foreach (DefaultSetting ds in this.m_DefaultSetting)
71 {
72 temp += "\n" + ds.ToString();
73 }
74 return temp;
75 }
76
77 }
78 [Serializable]
79 public class DefaultSetting
80 {
81 public DefaultSetting()
82 {
83
84 }
85 private string m_name;
86 private string m_value;
87 [XmlAttribute("name")]
88 public string name
89 {
90 get
91 {
92 return this.m_name;
93 }
94 set
95 {
96 this.m_name = value;
97 }
98 }
99 [XmlAttribute("value")]
100 public string value
101 {
102 get
103 {
104 return this.m_value;
105 }
106 set
107 {
108 this.m_value = value;
109 }
110 }
111 public override string ToString()
112 {
113 return string.Format("\n name={0} value={1}", this.m_name, this.m_value);
114 }
115
116 }
117 [Serializable]
118 public class SavedSettings
119 {
120 public SavedSettings()
121 {
122
123 }
124 private SavedSetting[] m_SavedSetting;
125 [XmlElement("SavedSetting")]
126 public SavedSetting[] SavedSetting
127 {
128 get
129 {
130 return this.m_SavedSetting;
131 }
132 set
133 {
134 this.m_SavedSetting = value;
135 }
136 }
137 }
138 [Serializable]
139 public class SavedSetting
140 {
141 public SavedSetting()
142 {
143
144 }
145 private string m_connstr;
146 private string m_DBType;
147 private string m_name;
148 [XmlAttribute("connstr")]
149 public string connstr
150 {
151 get
152 {
153 return this.m_connstr;
154 }
155 set
156 {
157 this.m_connstr = value;
158 }
159 }
160 [XmlAttribute("DBType")]
161 public string DBType
162 {
163 get
164 {
165 return this.m_DBType;
166 }
167 set
168 {
169 this.m_DBType = value;
170 }
171 }
172 [XmlAttribute("name")]
173 public string name
174 {
175 get
176 {
177 return this.m_name;
178 }
179 set
180 {
181 this.m_name = value;
182 }
183 }
184
185 public override string ToString()
186 {
187 return string.Format("\nconnstr={0} DBType={1} name={2}", this.m_connstr, this.m_DBType, this.m_name);
188 }
189 }
190
191
192}
193
1<?xml version="1.0" encoding="utf-8" ?>
2<Root>
3 <DefaultSettings>
4 <DefaultSetting name="Microsoft SQLServer" value="SQL"/>
5 <DefaultSetting name="Oracle" value="ORACLE"/>
6 </DefaultSettings>
7 <SavedSettings>
8 <SavedSetting connstr="" DBType="DB2" name="test"/>
9 <SavedSetting connstr="" DBType="MySQL" name="test2"/>
10 </SavedSettings>
11</Root>
2<Root>
3 <DefaultSettings>
4 <DefaultSetting name="Microsoft SQLServer" value="SQL"/>
5 <DefaultSetting name="Oracle" value="ORACLE"/>
6 </DefaultSettings>
7 <SavedSettings>
8 <SavedSetting connstr="" DBType="DB2" name="test"/>
9 <SavedSetting connstr="" DBType="MySQL" name="test2"/>
10 </SavedSettings>
11</Root>
1<?xml version="1.0" encoding="utf-8"?>
2<xs:schema id="Root" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
3 <xs:element name="Root" msdata:IsDataSet="true" msdata:Locale="en-US">
4 <xs:complexType>
5 <xs:choice minOccurs="0" maxOccurs="unbounded">
6 <xs:element name="DefaultSettings">
7 <xs:complexType>
8 <xs:sequence>
9 <xs:element name="DefaultSetting" minOccurs="0" maxOccurs="unbounded">
10 <xs:complexType>
11 <xs:attribute name="name" type="xs:string" />
12 <xs:attribute name="value" type="xs:string" />
13 </xs:complexType>
14 </xs:element>
15 </xs:sequence>
16 </xs:complexType>
17 </xs:element>
18 <xs:element name="SavedSettings">
19 <xs:complexType>
20 <xs:sequence>
21 <xs:element name="SavedSetting" minOccurs="0" maxOccurs="unbounded">
22 <xs:complexType>
23 <xs:attribute name="connstr" type="xs:string" />
24 <xs:attribute name="DBType" type="xs:string" />
25 <xs:attribute name="name" type="xs:string" />
26 </xs:complexType>
27 </xs:element>
28 </xs:sequence>
29 </xs:complexType>
30 </xs:element>
31 </xs:choice>
32 </xs:complexType>
33 </xs:element>
34</xs:schema>
2<xs:schema id="Root" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
3 <xs:element name="Root" msdata:IsDataSet="true" msdata:Locale="en-US">
4 <xs:complexType>
5 <xs:choice minOccurs="0" maxOccurs="unbounded">
6 <xs:element name="DefaultSettings">
7 <xs:complexType>
8 <xs:sequence>
9 <xs:element name="DefaultSetting" minOccurs="0" maxOccurs="unbounded">
10 <xs:complexType>
11 <xs:attribute name="name" type="xs:string" />
12 <xs:attribute name="value" type="xs:string" />
13 </xs:complexType>
14 </xs:element>
15 </xs:sequence>
16 </xs:complexType>
17 </xs:element>
18 <xs:element name="SavedSettings">
19 <xs:complexType>
20 <xs:sequence>
21 <xs:element name="SavedSetting" minOccurs="0" maxOccurs="unbounded">
22 <xs:complexType>
23 <xs:attribute name="connstr" type="xs:string" />
24 <xs:attribute name="DBType" type="xs:string" />
25 <xs:attribute name="name" type="xs:string" />
26 </xs:complexType>
27 </xs:element>
28 </xs:sequence>
29 </xs:complexType>
30 </xs:element>
31 </xs:choice>
32 </xs:complexType>
33 </xs:element>
34</xs:schema>
xsd文件可以用来校验欲载入文件的格式,
利用XmlSerializer的Deserialize方法将xml文件还原为Settings格式的对象状态
1XmlSerializer xs=new XmlSerializer(typeof(Settings));
2 FileStream fs = new FileStream("../../XMLFile1.xml",FileMode.Open);
3 Settings settings = (Settings)xs.Deserialize(fs);
2 FileStream fs = new FileStream("../../XMLFile1.xml",FileMode.Open);
3 Settings settings = (Settings)xs.Deserialize(fs);
Settings类还可以改进,减少到3个类,利用[XmlArrayItem(ElementName="")]和[XmlArray(ElementName="")]标记如下:
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5using System.Xml.Serialization;
6
7namespace DBSchema2Doc
8{
9 [Serializable]
10 [XmlRoot("Root")]
11 public class NewSettings
12 {
13 public NewSettings()
14 {
15
16 }
17 private DefaultSetting[] m_DefaultSetting;
18 private SavedSetting[] m_SavedSetting;
19 [XmlArray(ElementName="DefaultSettings")]
20 [XmlArrayItem(ElementName="DefaultSetting")]
21 public DefaultSetting[] DefaultSetting
22 {
23 get
24 {
25 return this.m_DefaultSetting;
26 }
27 set
28 {
29 this.m_DefaultSetting = value;
30 }
31 }
32 [XmlArray(ElementName="SavedSettings")]
33 [XmlArrayItem(ElementName="SavedSetting")]
34 public SavedSetting[] SavedSetting
35 {
36 get
37 {
38 return this.m_SavedSetting;
39 }
40 set
41 {
42 this.m_SavedSetting = value;
43 }
44 }
45 public override string ToString()
46 {
47 return base.ToString();
48 }
49 }
50 [Serializable]
51 public class DefaultSetting
52 {
53 public DefaultSetting()
54 {
55
56 }
57 private string m_name;
58 private string m_value;
59 [XmlAttribute("name")]
60 public string name
61 {
62 get
63 {
64 return this.m_name;
65 }
66 set
67 {
68 this.m_name = value;
69 }
70 }
71 [XmlAttribute("value")]
72 public string value
73 {
74 get
75 {
76 return this.m_value;
77 }
78 set
79 {
80 this.m_value = value;
81 }
82 }
83 public override string ToString()
84 {
85 return string.Format("\n name={0} value={1}", this.m_name, this.m_value);
86 }
87
88 }
89 [Serializable]
90 public class SavedSetting
91 {
92 public SavedSetting()
93 {
94
95 }
96 private string m_connstr;
97 private string m_DBType;
98 private string m_name;
99 [XmlAttribute("connstr")]
100 public string connstr
101 {
102 get
103 {
104 return this.m_connstr;
105 }
106 set
107 {
108 this.m_connstr = value;
109 }
110 }
111 [XmlAttribute("DBType")]
112 public string DBType
113 {
114 get
115 {
116 return this.m_DBType;
117 }
118 set
119 {
120 this.m_DBType = value;
121 }
122 }
123 [XmlAttribute("name")]
124 public string name
125 {
126 get
127 {
128 return this.m_name;
129 }
130 set
131 {
132 this.m_name = value;
133 }
134 }
135
136 public override string ToString()
137 {
138 return string.Format("\nconnstr={0} DBType={1} name={2}", this.m_connstr, this.m_DBType, this.m_name);
139 }
140 }
141
142
143}
144
2using System.Collections.Generic;
3using System.Text;
4
5using System.Xml.Serialization;
6
7namespace DBSchema2Doc
8{
9 [Serializable]
10 [XmlRoot("Root")]
11 public class NewSettings
12 {
13 public NewSettings()
14 {
15
16 }
17 private DefaultSetting[] m_DefaultSetting;
18 private SavedSetting[] m_SavedSetting;
19 [XmlArray(ElementName="DefaultSettings")]
20 [XmlArrayItem(ElementName="DefaultSetting")]
21 public DefaultSetting[] DefaultSetting
22 {
23 get
24 {
25 return this.m_DefaultSetting;
26 }
27 set
28 {
29 this.m_DefaultSetting = value;
30 }
31 }
32 [XmlArray(ElementName="SavedSettings")]
33 [XmlArrayItem(ElementName="SavedSetting")]
34 public SavedSetting[] SavedSetting
35 {
36 get
37 {
38 return this.m_SavedSetting;
39 }
40 set
41 {
42 this.m_SavedSetting = value;
43 }
44 }
45 public override string ToString()
46 {
47 return base.ToString();
48 }
49 }
50 [Serializable]
51 public class DefaultSetting
52 {
53 public DefaultSetting()
54 {
55
56 }
57 private string m_name;
58 private string m_value;
59 [XmlAttribute("name")]
60 public string name
61 {
62 get
63 {
64 return this.m_name;
65 }
66 set
67 {
68 this.m_name = value;
69 }
70 }
71 [XmlAttribute("value")]
72 public string value
73 {
74 get
75 {
76 return this.m_value;
77 }
78 set
79 {
80 this.m_value = value;
81 }
82 }
83 public override string ToString()
84 {
85 return string.Format("\n name={0} value={1}", this.m_name, this.m_value);
86 }
87
88 }
89 [Serializable]
90 public class SavedSetting
91 {
92 public SavedSetting()
93 {
94
95 }
96 private string m_connstr;
97 private string m_DBType;
98 private string m_name;
99 [XmlAttribute("connstr")]
100 public string connstr
101 {
102 get
103 {
104 return this.m_connstr;
105 }
106 set
107 {
108 this.m_connstr = value;
109 }
110 }
111 [XmlAttribute("DBType")]
112 public string DBType
113 {
114 get
115 {
116 return this.m_DBType;
117 }
118 set
119 {
120 this.m_DBType = value;
121 }
122 }
123 [XmlAttribute("name")]
124 public string name
125 {
126 get
127 {
128 return this.m_name;
129 }
130 set
131 {
132 this.m_name = value;
133 }
134 }
135
136 public override string ToString()
137 {
138 return string.Format("\nconnstr={0} DBType={1} name={2}", this.m_connstr, this.m_DBType, this.m_name);
139 }
140 }
141
142
143}
144