using
System;
2 using System.Text;
3 using System.IO;
4 using System.Xml;
5 using TPI;
6 using TPIManager;
7
8 namespace Grid20
9 {
10 /// <summary>
11 /// 对Xml的文件操作,根据数据的配置和数据样式的定义,将结果字符输出
12 /// </summary>
13 public class XmlAdapter
14 {
15 public XmlAdapter()
16 {
17 }
18 /// <summary>
19 /// 配置文件的存放地址
20 /// </summary>
21 private static string m_filepath = System.Web.HttpContext.Current.Server.MapPath( " ./Common/Config.xml " );
22
23 // public static string
24 /// <summary>
25 /// 读取XML的配置文件
26 /// </summary>
27 /// <param name="filepath"> 文件路径 </param>
28 /// <param name="itempath"> Xml路径 </param>
29 /// <returns> 节点值数组 </returns>
30 public static string [] ReadItems( string filepath, string itempath)
31 {
32 if ( ! System.IO.File.Exists(filepath))
33 {
34 return new string [ 1 ];
35 }
36 System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
37 doc.Load(filepath);
38 // 查找根节点
39 System.Xml.XmlNode root = doc.SelectSingleNode(itempath);
40 if (root == null )
41 {
42 return new string [ 1 ];
43 }
44
45 string [] ss = new string [root.ChildNodes.Count]; // (root.ChildNodes.Count);
46 for ( int i = 0 ;i < ss.Length;i ++ )
47 {
48 ss[i] = root.ChildNodes[i].InnerText;
49 }
50 root = null ;
51 return ss;
52 }
53 /// <summary>
54 /// 读取XML的配置文件
55 /// </summary>
56 /// <param name="filepath"> 文件路径 </param>
57 /// <param name="itempath"> Xml路径 </param>
58 /// <returns> 节点值 </returns>
59 public static string ReadItem( string filepath, string itempath)
60 {
61 if ( ! System.IO.File.Exists(filepath))
62 {
63 return "" ;
64 }
65 System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
66 doc.Load(filepath);
67
68 // 查找根节点
69 System.Xml.XmlNode root = doc.SelectSingleNode(itempath);
70 if (root == null )
71 {
72 return "" ;
73 }
74 string ss = "" ;
75 for ( int i = 0 ;i < root.ChildNodes.Count;i ++ )
76 {
77 ss += root.ChildNodes[i].InnerText;
78 }
79 root = null ;
80 return ss;
81 }
82 /// <summary>
83 /// 读取XML的配置文件
84 /// </summary>
85 /// <param name="filepath"> 文件路径 </param>
86 /// <param name="itempath"> Xml路径 </param>
87 /// <returns> 节点值 </returns>
88 public static string ReadItem( string filepath, string itempath, string item, string values)
89 {
90 if ( ! System.IO.File.Exists(filepath))
91 {
92 return "" ;
93 }
94 System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
95 doc.Load(filepath);
96
97 // 查找根节点
98 System.Xml.XmlNode root = doc.SelectSingleNode(itempath);
99 if (root == null )
100 {
101 return "" ;
102 }
103 string ss = "" ;
104 for ( int i = 0 ;i < root.ChildNodes.Count;i ++ )
105 {
106
107 if (root.ChildNodes[i][item].InnerText == values)
108 {
109 ss = root.ChildNodes[i][item].InnerText;
110 break ;
111 }
112 }
113 root = null ;
114 return ss;
115 }
116
117 /// <summary>
118 /// </summary>
119 /// <param name="filepath"> XML文档路径 </param>
120 /// <param name="itemname"> 节点名 </param>
121 /// <returns></returns>
122 private static XmlNode GetRoot( string filepath, string itemname)
123 {
124 if ( ! System.IO.File.Exists(filepath))
125 {
126 return null ;
127 }
128
129 System.Xml.XmlDocument doc = new XmlDocument();
130 doc.Load(filepath);
131 if (doc == null )
132 return null ;
133
134 System.Xml.XmlNodeList root = doc.SelectNodes( " /Root/Items/Item " );
135
136 if (root == null )
137 return null ;
138
139 foreach (XmlNode node in root)
140 {
141 if (node.SelectSingleNode( " Name " ).InnerText == itemname)
142 {
143 return node;
144 }
145 }
146 return null ;
147
148 }
149 /// <summary>
150 /// </summary>
151 /// <param name="node"> 具体节点 </param>
152 /// <param name="SQL"> 读出的SQL模版 </param>
153 /// <param name="parameters"> 要替换SQL的字段 </param>
154 /// <param name="sytle"> 显示风格 </param>
155 /// <param name="filed"> 需要显示的字段 </param>
156
157 private static void GetNode(XmlNode node, out string sqlstr, out string [] parameters, out string stylehtml, out string [] fileds, int style)
158 {
159 sqlstr = node.SelectSingleNode( " SqlCommand/Main " ).InnerText;
160
161 // 取得parameter 节点
162 XmlNodeList node_list = node.SelectNodes( " SqlCommand/Parameters/Parameter " );
163 parameters = new string [node_list.Count];
164 for ( int j = 0 ;j < node_list.Count;j ++ )
165 {
166 parameters[j] = node_list[j].InnerText;
167 }
168
169 string path = " ShowItems/ShowItem/Style[@SID= " + style.ToString() + " ] " ;
170
171 stylehtml = node.SelectSingleNode(path).InnerText;
172
173 // 取得 filed 节点
174 XmlNodeList filed_list = node.SelectNodes( " ShowItems/ShowItem/DbFields/Field " );
175 fileds = new string [filed_list.Count];
176 for ( int i = 0 ;i < filed_list.Count;i ++ )
177 {
178 fileds[i] = filed_list[i].InnerText;
179 }
180 }
181 /// <summary>
182 ///
183 /// </summary>
184 /// <param name="node"> 节点 </param>
185 /// <returns></returns>
186 private static string GetNodeStyle(XmlNode node)
187 {
188 return node[ " Style " ].InnerText;
189 }
190
191 /// <summary>
192 /// 得到需要显示的内容,直接从配置的数据库表中取得数据
193 /// </summary>
194 /// <param name="itemname"> 项名称 </param>
195 /// <param name="paramters"> 对应的参数列表 </param>
196 /// <param name="name"> 项目下的子名称 </param>
197 /// <param name="style"> 样式编号 </param>
198 /// <param name="ExecuteSql"> 是否执行SQL命令 </param>
199 /// <returns> 显示的Html代码,参数为空,不使用该参数 </returns>
200 /// <remarks>
201 /// </remarks>
202 public static string GetHtml( string itemname, string [] paramters, string name, int style, bool ExecuteSql)
203 {
204
205 string SQL;
206 string [] param;
207 string style_html;
208 string [] filed;
209
210 // 取sql命令
211 // 取sql参数
212 // 取显示的样式
213 // 取显示样式的显示项
214 XmlNode root = GetRoot(m_filepath,itemname);
215 if (root == null )
216 {
217 return "" ;
218 }
219 // 得到片头的节点
220 if (paramters == null )
221 {
222 style_html = GetNodeStyle(root);
223 return string .Format(style_html,itemname);
224 }
225
226 //
227 GetNode(root, out SQL, out param, out style_html, out filed,style);
228
229
230 if (ExecuteSql)
231 {
232 // 参数不对应
233
234 if (paramters.Length != param.Length)
235 return "" ;
236
237
238 // 组合sql命令
239
240 for ( int i = 0 ;i < param.Length;i ++ )
241 {
242 if (paramters[i] == "" )
243 return "" ;
244 SQL = SQL.Replace( " { " + param[i].Trim() + " } " ,paramters[i]);
245
246 }
247 // 查询结果
248
249 TPI.WebBase m_base = new WebBase();
250 m_base.InitComm();
251 TPI.RecordSet RS = m_base.ConnItem.AddRecordSet(SQL.Replace( " \r\n " , "" ).Trim());
252 RS.MoveFirst();
253
254 // 取显示结果
255
256 // 结合样式输出字符串
257 for ( int j = 0 ;j < filed.Length;j ++ )
258 {
259 string item_value = filed[j].Trim();
260 string Item_value;
261 // 查询的数据库字段
262 if (RS.GetValue(item_value) != "" && RS.GetValue(item_value) != null )
263 {
264 Item_value = RS.GetValue(item_value);
265 }
266 else
267 {
268 Item_value = "" ;
269 }
270
271 style_html = (style_html.Replace( " { " + item_value + " } " ,Item_value));
272 }
273
274
275 }
276 else // 直接输出结果
277 {
278 for ( int i = 0 ;i < filed.Length;i ++ )
279 {
280 if (paramters[i] == "" )
281 return "" ;
282
283 style_html = style_html.Replace( " { " + filed[i].Trim() + " } " ,paramters[i]);
284
285 }
286
287
288 }
289 return style_html.Replace( " {value} " ,name);
290 }
291 }
292 }
2 using System.Text;
3 using System.IO;
4 using System.Xml;
5 using TPI;
6 using TPIManager;
7
8 namespace Grid20
9 {
10 /// <summary>
11 /// 对Xml的文件操作,根据数据的配置和数据样式的定义,将结果字符输出
12 /// </summary>
13 public class XmlAdapter
14 {
15 public XmlAdapter()
16 {
17 }
18 /// <summary>
19 /// 配置文件的存放地址
20 /// </summary>
21 private static string m_filepath = System.Web.HttpContext.Current.Server.MapPath( " ./Common/Config.xml " );
22
23 // public static string
24 /// <summary>
25 /// 读取XML的配置文件
26 /// </summary>
27 /// <param name="filepath"> 文件路径 </param>
28 /// <param name="itempath"> Xml路径 </param>
29 /// <returns> 节点值数组 </returns>
30 public static string [] ReadItems( string filepath, string itempath)
31 {
32 if ( ! System.IO.File.Exists(filepath))
33 {
34 return new string [ 1 ];
35 }
36 System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
37 doc.Load(filepath);
38 // 查找根节点
39 System.Xml.XmlNode root = doc.SelectSingleNode(itempath);
40 if (root == null )
41 {
42 return new string [ 1 ];
43 }
44
45 string [] ss = new string [root.ChildNodes.Count]; // (root.ChildNodes.Count);
46 for ( int i = 0 ;i < ss.Length;i ++ )
47 {
48 ss[i] = root.ChildNodes[i].InnerText;
49 }
50 root = null ;
51 return ss;
52 }
53 /// <summary>
54 /// 读取XML的配置文件
55 /// </summary>
56 /// <param name="filepath"> 文件路径 </param>
57 /// <param name="itempath"> Xml路径 </param>
58 /// <returns> 节点值 </returns>
59 public static string ReadItem( string filepath, string itempath)
60 {
61 if ( ! System.IO.File.Exists(filepath))
62 {
63 return "" ;
64 }
65 System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
66 doc.Load(filepath);
67
68 // 查找根节点
69 System.Xml.XmlNode root = doc.SelectSingleNode(itempath);
70 if (root == null )
71 {
72 return "" ;
73 }
74 string ss = "" ;
75 for ( int i = 0 ;i < root.ChildNodes.Count;i ++ )
76 {
77 ss += root.ChildNodes[i].InnerText;
78 }
79 root = null ;
80 return ss;
81 }
82 /// <summary>
83 /// 读取XML的配置文件
84 /// </summary>
85 /// <param name="filepath"> 文件路径 </param>
86 /// <param name="itempath"> Xml路径 </param>
87 /// <returns> 节点值 </returns>
88 public static string ReadItem( string filepath, string itempath, string item, string values)
89 {
90 if ( ! System.IO.File.Exists(filepath))
91 {
92 return "" ;
93 }
94 System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
95 doc.Load(filepath);
96
97 // 查找根节点
98 System.Xml.XmlNode root = doc.SelectSingleNode(itempath);
99 if (root == null )
100 {
101 return "" ;
102 }
103 string ss = "" ;
104 for ( int i = 0 ;i < root.ChildNodes.Count;i ++ )
105 {
106
107 if (root.ChildNodes[i][item].InnerText == values)
108 {
109 ss = root.ChildNodes[i][item].InnerText;
110 break ;
111 }
112 }
113 root = null ;
114 return ss;
115 }
116
117 /// <summary>
118 /// </summary>
119 /// <param name="filepath"> XML文档路径 </param>
120 /// <param name="itemname"> 节点名 </param>
121 /// <returns></returns>
122 private static XmlNode GetRoot( string filepath, string itemname)
123 {
124 if ( ! System.IO.File.Exists(filepath))
125 {
126 return null ;
127 }
128
129 System.Xml.XmlDocument doc = new XmlDocument();
130 doc.Load(filepath);
131 if (doc == null )
132 return null ;
133
134 System.Xml.XmlNodeList root = doc.SelectNodes( " /Root/Items/Item " );
135
136 if (root == null )
137 return null ;
138
139 foreach (XmlNode node in root)
140 {
141 if (node.SelectSingleNode( " Name " ).InnerText == itemname)
142 {
143 return node;
144 }
145 }
146 return null ;
147
148 }
149 /// <summary>
150 /// </summary>
151 /// <param name="node"> 具体节点 </param>
152 /// <param name="SQL"> 读出的SQL模版 </param>
153 /// <param name="parameters"> 要替换SQL的字段 </param>
154 /// <param name="sytle"> 显示风格 </param>
155 /// <param name="filed"> 需要显示的字段 </param>
156
157 private static void GetNode(XmlNode node, out string sqlstr, out string [] parameters, out string stylehtml, out string [] fileds, int style)
158 {
159 sqlstr = node.SelectSingleNode( " SqlCommand/Main " ).InnerText;
160
161 // 取得parameter 节点
162 XmlNodeList node_list = node.SelectNodes( " SqlCommand/Parameters/Parameter " );
163 parameters = new string [node_list.Count];
164 for ( int j = 0 ;j < node_list.Count;j ++ )
165 {
166 parameters[j] = node_list[j].InnerText;
167 }
168
169 string path = " ShowItems/ShowItem/Style[@SID= " + style.ToString() + " ] " ;
170
171 stylehtml = node.SelectSingleNode(path).InnerText;
172
173 // 取得 filed 节点
174 XmlNodeList filed_list = node.SelectNodes( " ShowItems/ShowItem/DbFields/Field " );
175 fileds = new string [filed_list.Count];
176 for ( int i = 0 ;i < filed_list.Count;i ++ )
177 {
178 fileds[i] = filed_list[i].InnerText;
179 }
180 }
181 /// <summary>
182 ///
183 /// </summary>
184 /// <param name="node"> 节点 </param>
185 /// <returns></returns>
186 private static string GetNodeStyle(XmlNode node)
187 {
188 return node[ " Style " ].InnerText;
189 }
190
191 /// <summary>
192 /// 得到需要显示的内容,直接从配置的数据库表中取得数据
193 /// </summary>
194 /// <param name="itemname"> 项名称 </param>
195 /// <param name="paramters"> 对应的参数列表 </param>
196 /// <param name="name"> 项目下的子名称 </param>
197 /// <param name="style"> 样式编号 </param>
198 /// <param name="ExecuteSql"> 是否执行SQL命令 </param>
199 /// <returns> 显示的Html代码,参数为空,不使用该参数 </returns>
200 /// <remarks>
201 /// </remarks>
202 public static string GetHtml( string itemname, string [] paramters, string name, int style, bool ExecuteSql)
203 {
204
205 string SQL;
206 string [] param;
207 string style_html;
208 string [] filed;
209
210 // 取sql命令
211 // 取sql参数
212 // 取显示的样式
213 // 取显示样式的显示项
214 XmlNode root = GetRoot(m_filepath,itemname);
215 if (root == null )
216 {
217 return "" ;
218 }
219 // 得到片头的节点
220 if (paramters == null )
221 {
222 style_html = GetNodeStyle(root);
223 return string .Format(style_html,itemname);
224 }
225
226 //
227 GetNode(root, out SQL, out param, out style_html, out filed,style);
228
229
230 if (ExecuteSql)
231 {
232 // 参数不对应
233
234 if (paramters.Length != param.Length)
235 return "" ;
236
237
238 // 组合sql命令
239
240 for ( int i = 0 ;i < param.Length;i ++ )
241 {
242 if (paramters[i] == "" )
243 return "" ;
244 SQL = SQL.Replace( " { " + param[i].Trim() + " } " ,paramters[i]);
245
246 }
247 // 查询结果
248
249 TPI.WebBase m_base = new WebBase();
250 m_base.InitComm();
251 TPI.RecordSet RS = m_base.ConnItem.AddRecordSet(SQL.Replace( " \r\n " , "" ).Trim());
252 RS.MoveFirst();
253
254 // 取显示结果
255
256 // 结合样式输出字符串
257 for ( int j = 0 ;j < filed.Length;j ++ )
258 {
259 string item_value = filed[j].Trim();
260 string Item_value;
261 // 查询的数据库字段
262 if (RS.GetValue(item_value) != "" && RS.GetValue(item_value) != null )
263 {
264 Item_value = RS.GetValue(item_value);
265 }
266 else
267 {
268 Item_value = "" ;
269 }
270
271 style_html = (style_html.Replace( " { " + item_value + " } " ,Item_value));
272 }
273
274
275 }
276 else // 直接输出结果
277 {
278 for ( int i = 0 ;i < filed.Length;i ++ )
279 {
280 if (paramters[i] == "" )
281 return "" ;
282
283 style_html = style_html.Replace( " { " + filed[i].Trim() + " } " ,paramters[i]);
284
285 }
286
287
288 }
289 return style_html.Replace( " {value} " ,name);
290 }
291 }
292 }