.net操纵xml文件类(c#)_asp.net技巧1

1using System;

  2using System.Xml;

  3using System.Web;

  4namespace solucky

  5{

  6    /**//// <summary>

  7    /// 必需用XPATH表达式来获取相应节点

  8    /// 关于xpath可以参见:

  9    /// </summary>

 10    public class MyXml

 11    {

 12        变量#region 变量

 13        /**//// <summary>

 14        /// xml文件所在路径类型

 15        /// </summary>

 16        /// <remarks>xml文件所在路径类型</remarks>

 17        public enum enumXmlPathType

 18        {    

 19            /**//// <summary>

 20            /// 绝对路径

 21            /// </summary>

 22            AbsolutePath,

 23            /**//// <summary>

 24            /// 虚拟路径

 25            /// </summary>

 26            VirtualPath

 27        }

 28

 29        private string xmlFilePath ;

 30        private enumXmlPathType xmlFilePathType ;

 31        private XmlDocument xmlDoc = new XmlDocument() ;

 32        #endregion

 33

 34

 35        属性#region 属性

 36        /**//// <summary>

 37        /// 文件路径

 38        /// </summary>

 39        /// <remarks>文件路径</remarks>

 40        public string XmlFilePath

 41        {

 42            get

 43            {

 44                return this.xmlFilePath;

 45            }

 46            set

 47            {

 48                xmlFilePath = value ;

 49

 50            }

 51        }

 52

 53        /**//// <summary>

 54        /// 文件路径类型

 55        /// </summary>

 56        public enumXmlPathType XmlFilePathTyp

 57        {

 58            set

 59            {

 60                xmlFilePathType = value ;

 61            }

 62        }

 63        #endregion

 64

 65        构造函数#region 构造函数

 66        /**//// <summary>

 67        /// 

 68        /// </summary>

 69        /// <param name="tempXmlFilePath"></param>

 70        public MyXml( string tempXmlFilePath )

 71        {

 72            //

 73            // TODO: 在此处添加构造函数逻辑

 74            //

 75

 76            this.xmlFilePathType = enumXmlPathType.VirtualPath ;

 77            this.xmlFilePath = tempXmlFilePath ;

 78            GetXmlDocument() ;

 79            //xmlDoc.Load( xmlFilePath ) ;

 80        }

 81    

 82        /**//// <summary>

 83        /// 构造函数

 84        /// </summary>

 85        /// <param name="tempXmlFilePath">文件路径</param>

 86        /// <param name="tempXmlFilePathType">类型</param>

 87        public MyXml( string tempXmlFilePath , enumXmlPathType tempXmlFilePathType )

 88        {

 89            //

 90            // TODO: 在此处添加构造函数逻辑

 91            //

 92            this.xmlFilePathType = tempXmlFilePathType ;

 93            this.xmlFilePath = tempXmlFilePath ;

 94            GetXmlDocument() ;

 95        }

 96        #endregion

 97

 98

 99        /**////<summary>

100        ///获取XmlDocument实体类

101        ///</summary>    

102        /// <returns>指定的XML描述文件的一个xmldocument实例</returns>

103        private XmlDocument GetXmlDocument()

104        {

105            XmlDocument doc=null;

106

107            if( this.xmlFilePathType == enumXmlPathType.AbsolutePath )

108            {

109                doc = GetXmlDocumentFromFile( xmlFilePath ) ;

110            }

111            else if( this.xmlFilePathType == enumXmlPathType.VirtualPath )

112            {

113                doc = GetXmlDocumentFromFile(HttpContext.Current.Server.MapPath(xmlFilePath)) ;

114            }

115            return doc;

116        }

117

118        private XmlDocument GetXmlDocumentFromFile(string tempXmlFilePath)

119        {

120            string xmlFileFullPath = tempXmlFilePath ;

121            xmlDoc.Load(xmlFileFullPath) ;

122            //定义事件处理

123            xmlDoc.NodeChanged += new XmlNodeChangedEventHandler(this.nodeUpdateEvent);

124            xmlDoc.NodeInserted += new XmlNodeChangedEventHandler(this.nodeInsertEvent);

125            xmlDoc.NodeRemoved += new XmlNodeChangedEventHandler(this.nodeDeleteEvent);

126            return xmlDoc ;

127        }

128

129        读取指定节点的指定属性值#region 读取指定节点的指定属性值

130        /**//// <summary>

131        /// 功能:

132        /// 读取指定节点的指定属性值    

133        /// </summary>

134        /// <param name="strNode">节点名称</param>

135        /// <param name="strAttribute">此节点的属性</param>

136        /// <returns></returns>

137        public string GetXmlNodeAttributeValue(string strNode,string strAttribute)

138        {

139            string strReturn = "";

140            try

141            {

142                //根据指定路径获取节点

143                XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode) ;

144                if (!(xmlNode==null))

145                {//获取节点的属性,并循环取出需要的属性值

146                    XmlAttributeCollection xmlAttr = xmlNode.Attributes ;

147

148                    for(int i=0 ;i<xmlAttr.Count; i++)

149                    {

150                        if (xmlAttr.Item(i).Name == strAttribute)

151                        {

152                            strReturn = xmlAttr.Item(i).Value ;

153                            break;

154                        }

155                    }

156                }

157            }

158            catch(XmlException xmle)

159            {

160                throw xmle ;

161            }

162            return strReturn ;

163        }

164        #endregion 

165

166

167        读取指定节点的值#region 读取指定节点的值

168        /**//// <summary>

169        /// 功能:

170        /// 读取指定节点的值    

171        /// </summary>

172        /// <param name="strNode">节点名称</param>

173        /// <returns></returns>

174        public string GetXmlNodeValue(string strNode)

175        {

176            string strReturn = String.Empty ;

177

178            try

179            {

180                //根据路径获取节点

181                XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode) ;

182                if (!(xmlNode==null))

183                    strReturn = xmlNode.InnerText ;

184            }

185            catch(XmlException xmle)

186            {

187                throw xmle ;

188            }

189            return strReturn ;

190        }

191        #endregion

192

193        设置节点值#region 设置节点值

194        /**//// <summary>

195        /// 功能:

196        /// 设置节点值        

197        /// </summary>

198        /// <param name="strNode">节点的名称</param>

199        /// <param name="newValue">节点值</param>

200        public void SetXmlNodeValue(string xmlNodePath,string xmlNodeValue)

201        {

202            try

203            {

204                //可以批量为符合条件的节点进行付值

205                XmlNodeList xmlNode=this.xmlDoc.SelectNodes(xmlNodePath);

206                if (!(xmlNode==null))

207                {

208                    foreach(XmlNode xn in xmlNode)

209                    {

210                        xn.InnerText = xmlNodeValue ;    

211                    }

212                }

213                /**//*

214                 * 根据指定路径获取节点

215                XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath) ;            

216                //设置节点值

217                if (!(xmlNode==null))

218                    xmlNode.InnerText = xmlNodeValue ;*/                

219            }

220            catch(XmlException xmle)

221            {

222                throw xmle ;

223            }

224        }

225        #endregion

226

227        设置节点的属性值#region 设置节点的属性值

228        /**//// <summary>

229        /// 功能:

230        /// 设置节点的属性值    

231        /// </summary>

232        /// <param name="xmlNodePath">节点名称</param>

233        /// <param name="xmlNodeAttribute">属性名称</param>

234        /// <param name="xmlNodeAttributeValue">属性值</param>

235        public void SetXmlNodeAttributeValue(string xmlNodePath,string xmlNodeAttribute,string xmlNodeAttributeValue)

236        {

237            try

238            {

239                //可以批量为符合条件的节点的属性付值

240                XmlNodeList xmlNode=this.xmlDoc.SelectNodes(xmlNodePath);

241                if (!(xmlNode==null))

242                {

243                    foreach(XmlNode xn in xmlNode)

244                    {

245                        XmlAttributeCollection xmlAttr = xn.Attributes ;

246                        for(int i=0 ; i<xmlAttr.Count ; i++)

247                        {

248                            if ( xmlAttr.Item(i).Name == xmlNodeAttribute )

249                            {

250                                xmlAttr.Item(i).Value = xmlNodeAttributeValue;

251                                break ;

252                            }

253                        }    

254                    }

255                }

256                /**//*单个节点

257                //根据指定路径获取节点

258                XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath) ;

259                if (!(xmlNode==null))

260                {//获取节点的属性,并循环取出需要的属性值

261                    XmlAttributeCollection xmlAttr = xmlNode.Attributes ;

262                    for(int i=0 ; i<xmlAttr.Count ; i++)

263                    {

264                        if ( xmlAttr.Item(i).Name == xmlNodeAttribute )

265                        {

266                            xmlAttr.Item(i).Value = xmlNodeAttributeValue;

267                            break ;

268                        }

269                    }    

270                }

271                */

272            }

273            catch(XmlException xmle)

274            {

275                throw xmle ;

276            }

277        }

278        #endregion

279

280        添加#region 添加

281        /**//// <summary>

282        /// 获取XML文件的根元素

283        /// </summary>

284        public XmlNode GetXmlRoot()

285        {

286            return xmlDoc.DocumentElement ;

287        }

288

289        /**//// <summary>

290        /// 在根节点下添加父节点

291        /// </summary>

292        public void AddParentNode(string parentNode)

293        {

294            try

295            {

296                XmlNode root = GetXmlRoot() ;

297                XmlNode parentXmlNode = xmlDoc.CreateElement(parentNode) ;

298                root.AppendChild(parentXmlNode) ;                

299            }

300            catch(XmlException xmle)

301            {

302                throw xmle ;

303            }

304        }

305        

 

你可能感兴趣的:(asp.net)