惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - Brave Heart

不能访问Temporary ASP.NET Files的问题 a href="#"与 a href="javascript:void(0)" 的区别 使用 IntelliTrace 调试应用程序 Javascript实现页面跳转的问题 - Brave Heart - 博客园 估计堆的大小 怎样查看SQL Server数据表的数据页结构(转载) "服务器 '*********' 上的 MSDTC 不可用"错误的解决方法 Asp.Net在SqlServer中的图片存取技术 [转] SHTML 教程 自增字段的SQL语句解决方案 优化数据库的方法及SQL语句优化原则 DBA在系统设计、开发中的重要性 ADSI概览 .NET平台网站架构调优实践点滴 SQL SERVER 2005 DATABASE--公用表表达式(CTE) 学习.Net的经典网站(转载自CSDN技术中心) 操作Excel生成的mht代码 实现Logo滑动 代码:确定两个日期之间的间隔 (Visual C#)
基本的xml操作类
Brave Heart · 2007-10-29 · via 博客园 - Brave Heart

  1/*
  2 * Created by SharpDevelop.
  3 * User: XiaoCai
  4 * Date: 2006-9-25
  5 * Time: 10:05
  6 * 
  7 * If you have anything,Please contact us;
  8 */

  9 
 10using System;
 11using System.Xml;
 12
 13namespace BH.XmlClass
 14{
 15    基本的XML数据对象类
 87    
 88    ///    <summary>
 89    /// 数据操作类,只能对简单的xml数据表结构操作
 90    /// XML文件原型:1、只有一个根结点。2、根结点可以带属性。
 91    ///     3、子结点标识必须相同。4、子结点和孙结点都不带属性
 92    /// </summary>

 93    public class XmlOprator
 94    {
 95        /// <summary>
 96        /// 添加一个新的XML结点
 97        /// </summary>
 98        /// <param name="vXmlItem">结点信息对象</param>

 99        public void AddXml(XmlItem vXmlItem)
100        {
101            XmlDocument XmlDoc = new XmlDocument();
102            XmlDoc.Load(vXmlItem.XmlPath);
103            //
104            //TODO:查找根结点
105            //
106            XmlNode root = XmlDoc.SelectSingleNode(vXmlItem.RootNode);
107            if(vXmlItem.IsRootAttribute){
108                //添加根结点属性
109                XmlElement xe = (XmlElement)root;
110                for(int i=0;i < vXmlItem.RootAttribute.Length;i++){
111                    xe.SetAttribute(vXmlItem.RootAttribute[i], vXmlItem.RootAttributeValue[i]);
112                }

113                //xe.SetAttribute("Date",vXmlItem.Date);
114                //xe.SetAttribute("Author",vXmlItem.Author);
115                //xe.SetAttribute("Description",vXmlItem.Description);
116            }

117            else
118            {
119                //添加根结点的子结点
120                XmlElement xe = XmlDoc.CreateElement(vXmlItem.ChildNode);
121                
122                for(int i=0;i < vXmlItem.GrandsonNode.Length;i++){
123                    XmlElement xeSub1 = XmlDoc.CreateElement(vXmlItem.GrandsonNode[i]);
124                    xeSub1.InnerText = vXmlItem.GrandsonNodeValue[i];
125                    xe.AppendChild(xeSub1);
126                }

127                
128                /*//xe的第一个子结点
129                XmlElement xeSub1 = XmlDoc.CreateElement("Name");
130                xeSub1.InnerText = vXmlItem.Name;
131                xe.AppendChild(xeSub1);
132                //xe的第二个子结点
133                XmlElement xeSub2 = XmlDoc.CreateElement("Url");
134                xeSub2.InnerText = vXmlItem.Url;
135                xe.AppendChild(xeSub2);
136                //xe的第三个子结点
137                XmlElement xeSub3 = XmlDoc.CreateElement("Img");
138                xeSub3.InnerText = vXmlItem.Img;
139                xe.AppendChild(xeSub3);
140                //xe的第四个子结点
141                XmlElement xeSub4 = XmlDoc.CreateElement("Address");
142                xeSub4.InnerText = vXmlItem.Address;
143                xe.AppendChild(xeSub4);*/

144                    
145                root.AppendChild(xe);
146                XmlDoc.Save(vXmlItem.XmlPath);
147            }

148        }

149        
150        /// <summary>
151        /// 编辑结点信息
152        /// </summary>
153        /// <param name="vXmlItem">要修改的结点信息对象</param>
154        /// <param name="Index">孙结点的索引</param>
155        /// <param name="WhereStr">和索引对应的条件</param>

156        public void EditXml(XmlItem vXmlItem,int Index,string WhereStr)
157        {
158            XmlDocument XmlDoc = new XmlDocument();
159            XmlDoc.Load(vXmlItem.XmlPath);
160            
161            XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
162            foreach(XmlNode xn in xnl){
163                XmlElement xe = (XmlElement)xn;
164                if(xe.ChildNodes[Index].InnerText==WhereStr){
165                    for(int i=0;i < vXmlItem.GrandsonNode.Length;i++){
166                        xe.ChildNodes[i].InnerText = vXmlItem.GrandsonNodeValue[i];
167                    }

168                    /*xe.ChildNodes[0].InnerText = vXmlItem.Name;
169                    xe.ChildNodes[1].InnerText = vXmlItem.Url;
170                    xe.ChildNodes[2].InnerText = vXmlItem.Img;
171                    xe.ChildNodes[3].InnerText = vXmlItem.Address;*/

172                }

173            }

174            XmlDoc.Save(vXmlItem.XmlPath);
175        }

176        
177        /// <summary>
178        /// 删除XML指定结点,孙结点的索引作为条件
179        /// </summary>
180        /// <param name="vXmlItem">结点信息对象</param>
181        /// <param name="Index">孙结点的索引</param>
182        /// <param name="WhereStr">和索引对应的条件</param>

183        public void DeleteXml(XmlItem vXmlItem,int Index,string WhereStr)
184        {
185            XmlDocument XmlDoc = new XmlDocument();
186            XmlDoc.Load(vXmlItem.XmlPath);
187            
188            XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
189            //按照孙结点的索引循环查找指定结点删除
190            foreach(XmlNode xn in xnl){
191                XmlElement xe = (XmlElement)xn;
192                if(xe.ChildNodes[Index].InnerText==WhereStr){
193                    XmlDoc.SelectSingleNode(vXmlItem.RootNode).RemoveChild(xe);
194                }

195            }

196            XmlDoc.Save(vXmlItem.XmlPath);
197        }

198        
199        public void DeleteXml(XmlItem vXI,string vGrandsonNode,string WhereStr){
200            XmlDocument XmlDoc = new XmlDocument();
201            XmlDoc.Load(vXI.XmlPath);
202            
203            XmlNodeList xnl = XmlDoc.SelectSingleNode(vXI.RootNode).ChildNodes;
204            //按照孙结点的名称循环查找指定结点删除
205            foreach(XmlNode xn in xnl){
206                XmlElement xe = (XmlElement)xn;
207                if(xe.GetElementsByTagName(vGrandsonNode)[0].InnerText==WhereStr){
208                    XmlDoc.SelectSingleNode(vXI.RootNode).RemoveChild(xe);
209                }

210            }

211            XmlDoc.Save(vXI.XmlPath);
212        }

213    }

214}

215