.NET提升中...

No one will make you success to youself~

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
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 } 
posted on 2007-08-03 16:34  叶自飘零  阅读(349)  评论(0编辑  收藏  举报