using System;
using System.Xml;
namespace XmlParser
{
/// <summary>
//----------------------------------网上资料转---
//XmlReader类用于Xml文件的一般读取操作,以下对这个类做简单介绍:
//
//Attributes(属性):
//listBox: 设置该属性主要为了得到客户端控件以便于显示所读到的文件的内容(这里是ListBox控件)
//xmlPath: 设置该属性为了得到一个确定的Xml文件的绝对路径
//
//Basilic Using(重要的引用):
//System.Xml: 该命名空间中封装有对Xml进行操作的常用类,本类中使用了其中的XmlTextReader类
//XmlTextReader: 该类提供对Xml文件进行读取的功能,它可以验证文档是否格式良好,如果不是格式 // 良好的Xml文档,该类在读取过程中将会抛出XmlException异常,可使用该类提供的
// 一些方法对文档节点进行读取,筛选等操作以及得到节点的名称和值
//
//bool XmlTextReader.Read(): 读取流中下一个节点,当读完最后一个节点再次调用该方法该方法返回false
//XmlNodeType XmlTextReader.NodeType: 该属性返回当前节点的类型
// XmlNodeType.Element 元素节点
// XmlNodeType.EndElement 结尾元素节点
// XmlNodeType.XmlDeclaration 文档的第一个节点
// XmlNodeType.Text 文本节点
//bool XmlTextReader.HasAttributes: 当前节点有没有属性,返回true或false
//string XmlTextReader.Name: 返回当前节点的名称
//string XmlTextReader.Value: 返回当前节点的值
//string XmlTextReader.LocalName: 返回当前节点的本地名称
//string XmlTextReader.NamespaceURI: 返回当前节点的命名空间URI
//string XmlTextReader.Prefix: 返回当前节点的前缀
//bool XmlTextReader.MoveToNextAttribute(): 移动到当前节点的下一个属性
//---------------------------------------------------------------------------------------------------
/// </summary>
public class XmlParser
{
string xmlFilePath="";
public XmlParser(string xmlFilePath)
{
this.xmlFilePath=@xmlFilePath;
}
//读取指定元素内容(需xml无同名元素)
public string XmlRead(string nodeName)
{
XmlTextReader xr=new XmlTextReader(xmlFilePath);
string returnValue="";
bool stopFlag=false;
while(xr.Read())
{
if(xr.Name==nodeName.Trim())
{
while(xr.Read())
{
if(xr.NodeType==XmlNodeType.Element) break;
if(xr.NodeType==XmlNodeType.Text)
{
returnValue=xr.Value;
stopFlag=true;
break;
}
}
}
if(stopFlag) break;
}
xr.Close();
return returnValue;
}
//更改指定元素内容
public bool XmlUpdate(string Xpath,string content)
{
bool sucessFlag=false;
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load(xmlFilePath);
XmlNode node = xmlDoc.SelectSingleNode(Xpath);
node.InnerText=content;
xmlDoc.Save(xmlFilePath);
return sucessFlag;
}
}
}