C# XML操作类分享
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下
XmlHelper
usingSystem.Xml;
usingSystem.Data;
namespaceDotNet.Utilities
{
///
///Xml的操作公共类
///
publicclassXmlHelper
{
#region字段定义
///
///XML文件的物理路径
///
privatestring_filePath=string.Empty;
///
///Xml文档
///
privateXmlDocument_xml;
///
///XML的根节点
///
privateXmlElement_element;
#endregion
#region构造方法
///
///实例化XmlHelper对象
///
///Xml文件的相对路径
publicXmlHelper(stringxmlFilePath)
{
//获取XML文件的绝对路径
_filePath=SysHelper.GetPath(xmlFilePath);
}
#endregion
#region创建XML的根节点
///
///创建XML的根节点
///
privatevoidCreateXMLElement()
{
//创建一个XML对象
_xml=newXmlDocument();
if(DirFile.IsExistFile(_filePath))
{
//加载XML文件
_xml.Load(this._filePath);
}
//为XML的根节点赋值
_element=_xml.DocumentElement;
}
#endregion
#region获取指定XPath表达式的节点对象
///
///获取指定XPath表达式的节点对象
///
///XPath表达式,
///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem"
///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点.
///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
///
publicXmlNodeGetNode(stringxPath)
{
//创建XML的根节点
CreateXMLElement();
//返回XPath节点
return_element.SelectSingleNode(xPath);
}
#endregion
#region获取指定XPath表达式节点的值
///
///获取指定XPath表达式节点的值
///
///XPath表达式,
///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem"
///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点.
///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
///
publicstringGetValue(stringxPath)
{
//创建XML的根节点
CreateXMLElement();
//返回XPath节点的值
return_element.SelectSingleNode(xPath).InnerText;
}
#endregion
#region获取指定XPath表达式节点的属性值
///
///获取指定XPath表达式节点的属性值
///
///XPath表达式,
///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem"
///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点.
///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
///
///属性名
publicstringGetAttributeValue(stringxPath,stringattributeName)
{
//创建XML的根节点
CreateXMLElement();
//返回XPath节点的属性值
return_element.SelectSingleNode(xPath).Attributes[attributeName].Value;
}
#endregion
#region新增节点
///
///1.功能:新增节点。
///2.使用条件:将任意节点插入到当前Xml文件中。
///
///要插入的Xml节点
publicvoidAppendNode(XmlNodexmlNode)
{
//创建XML的根节点
CreateXMLElement();
//导入节点
XmlNodenode=_xml.ImportNode(xmlNode,true);
//将节点插入到根节点下
_element.AppendChild(node);
}
///
///1.功能:新增节点。
///2.使用条件:将DataSet中的第一条记录插入Xml文件中。
///
///DataSet的实例,该DataSet中应该只有一条记录
publicvoidAppendNode(DataSetds)
{
//创建XmlDataDocument对象
XmlDataDocumentxmlDataDocument=newXmlDataDocument(ds);
//导入节点
XmlNodenode=xmlDataDocument.DocumentElement.FirstChild;
//将节点插入到根节点下
AppendNode(node);
}
#endregion
#region删除节点
///
///删除指定XPath表达式的节点
///
///XPath表达式,
///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem"
///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点.
///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
///
publicvoidRemoveNode(stringxPath)
{
//创建XML的根节点
CreateXMLElement();
//获取要删除的节点
XmlNodenode=_xml.SelectSingleNode(xPath);
//删除节点
_element.RemoveChild(node);
}
#endregion//删除节点
#region保存XML文件
///
///保存XML文件
///
publicvoidSave()
{
//创建XML的根节点
CreateXMLElement();
//保存XML文件
_xml.Save(this._filePath);
}
#endregion//保存XML文件
#region静态方法
#region创建根节点对象
///
///创建根节点对象
///
///Xml文件的相对路径
privatestaticXmlElementCreateRootElement(stringxmlFilePath)
{
//定义变量,表示XML文件的绝对路径
stringfilePath="";
//获取XML文件的绝对路径
filePath=SysHelper.GetPath(xmlFilePath);
//创建XmlDocument对象
XmlDocumentxmlDocument=newXmlDocument();
//加载XML文件
xmlDocument.Load(filePath);
//返回根节点
returnxmlDocument.DocumentElement;
}
#endregion
#region获取指定XPath表达式节点的值
///
///获取指定XPath表达式节点的值
///
///Xml文件的相对路径
///XPath表达式,
///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem"
///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点.
///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
///
publicstaticstringGetValue(stringxmlFilePath,stringxPath)
{
//创建根对象
XmlElementrootElement=CreateRootElement(xmlFilePath);
//返回XPath节点的值
returnrootElement.SelectSingleNode(xPath).InnerText;
}
#endregion
#region获取指定XPath表达式节点的属性值
///
///获取指定XPath表达式节点的属性值
///
///Xml文件的相对路径
///XPath表达式,
///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem"
///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点.
///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
///
///属性名
publicstaticstringGetAttributeValue(stringxmlFilePath,stringxPath,stringattributeName)
{
//创建根对象
XmlElementrootElement=CreateRootElement(xmlFilePath);
//返回XPath节点的属性值
returnrootElement.SelectSingleNode(xPath).Attributes[attributeName].Value;
}
#endregion
#endregion
publicstaticvoidSetValue(stringxmlFilePath,stringxPath,stringnewtext)
{
//stringpath=SysHelper.GetPath(xmlFilePath);
//varqueryXML=fromxmlLoginxelem.Descendants("msg_log")
////所有名字为Bin的记录
//wherexmlLog.Element("user").Value=="Bin"
//selectxmlLog;
//foreach(XElementelinqueryXML)
//{
//el.Element("user").Value="LiuBin";//开始修改
//}
//xelem.Save(path);
}
}
}
XmlProcess
usingSystem;
usingSystem.Data;
usingSystem.IO;
usingSystem.Xml;
namespaceDotNet.Utilities
{
publicclassXMLProcess
{
#region构造函数
publicXMLProcess()
{}
publicXMLProcess(stringstrPath)
{
this._XMLPath=strPath;
}
#endregion
#region公有属性
privatestring_XMLPath;
publicstringXMLPath
{
get{returnthis._XMLPath;}
}
#endregion
#region私有方法
///
///导入XML文件
///
///XML文件路径
privateXmlDocumentXMLLoad()
{
stringXMLFile=XMLPath;
XmlDocumentxmldoc=newXmlDocument();
try
{
stringfilename=AppDomain.CurrentDomain.BaseDirectory.ToString()+XMLFile;
if(File.Exists(filename))xmldoc.Load(filename);
}
catch(Exceptione)
{}
returnxmldoc;
}
///
///导入XML文件
///
///XML文件路径
privatestaticXmlDocumentXMLLoad(stringstrPath)
{
XmlDocumentxmldoc=newXmlDocument();
try
{
stringfilename=AppDomain.CurrentDomain.BaseDirectory.ToString()+strPath;
if(File.Exists(filename))xmldoc.Load(filename);
}
catch(Exceptione)
{}
returnxmldoc;
}
///
///返回完整路径
///
///Xml的路径
privatestaticstringGetXmlFullPath(stringstrPath)
{
if(strPath.IndexOf(":")>0)
{
returnstrPath;
}
else
{
returnSystem.Web.HttpContext.Current.Server.MapPath(strPath);
}
}
#endregion
#region读取数据
///
///读取指定节点的数据
///
///节点
///使用示列:
///XMLProsess.Read("/Node","")
///XMLProsess.Read("/Node/Element[@Attribute='Name']")
publicstringRead(stringnode)
{
stringvalue="";
try
{
XmlDocumentdoc=XMLLoad();
XmlNodexn=doc.SelectSingleNode(node);
value=xn.InnerText;
}
catch{}
returnvalue;
}
///
///读取指定路径和节点的串联值
///
///路径
///节点
///属性名,非空时返回该属性值,否则返回串联值
///使用示列:
///XMLProsess.Read(path,"/Node","")
///XMLProsess.Read(path,"/Node/Element[@Attribute='Name']")
publicstaticstringRead(stringpath,stringnode)
{
stringvalue="";
try
{
XmlDocumentdoc=XMLLoad(path);
XmlNodexn=doc.SelectSingleNode(node);
value=xn.InnerText;
}
catch{}
returnvalue;
}
///
///读取指定路径和节点的属性值
///
///路径
///节点
///属性名,非空时返回该属性值,否则返回串联值
///使用示列:
///XMLProsess.Read(path,"/Node","")
///XMLProsess.Read(path,"/Node/Element[@Attribute='Name']","Attribute")
publicstaticstringRead(stringpath,stringnode,stringattribute)
{
stringvalue="";
try
{
XmlDocumentdoc=XMLLoad(path);
XmlNodexn=doc.SelectSingleNode(node);
value=(attribute.Equals("")?xn.InnerText:xn.Attributes[attribute].Value);
}
catch{}
returnvalue;
}
///
///获取某一节点的所有孩子节点的值
///
///要查询的节点
publicstring[]ReadAllChildallValue(stringnode)
{
inti=0;
string[]str={};
XmlDocumentdoc=XMLLoad();
XmlNodexn=doc.SelectSingleNode(node);
XmlNodeListnodelist=xn.ChildNodes;//得到该节点的子节点
if(nodelist.Count>0)
{
str=newstring[nodelist.Count];
foreach(XmlElementelinnodelist)//读元素值
{
str[i]=el.Value;
i++;
}
}
returnstr;
}
///
///获取某一节点的所有孩子节点的值
///
///要查询的节点
publicXmlNodeListReadAllChild(stringnode)
{
XmlDocumentdoc=XMLLoad();
XmlNodexn=doc.SelectSingleNode(node);
XmlNodeListnodelist=xn.ChildNodes;//得到该节点的子节点
returnnodelist;
}
///
///读取XML返回经排序或筛选后的DataView
///
///筛选条件,如:"name='kgdiwss'"
///排序条件,如:"Iddesc"
publicDataViewGetDataViewByXml(stringstrWhere,stringstrSort)
{
try
{
stringXMLFile=this.XMLPath;
stringfilename=AppDomain.CurrentDomain.BaseDirectory.ToString()+XMLFile;
DataSetds=newDataSet();
ds.ReadXml(filename);
DataViewdv=newDataView(ds.Tables[0]);//创建DataView来完成排序或筛选操作
if(strSort!=null)
{
dv.Sort=strSort;//对DataView中的记录进行排序
}
if(strWhere!=null)
{
dv.RowFilter=strWhere;//对DataView中的记录进行筛选,找到我们想要的记录
}
returndv;
}
catch(Exception)
{
returnnull;
}
}
///
///读取XML返回DataSet
///
///XML文件相对路径
publicDataSetGetDataSetByXml(stringstrXmlPath)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables.Count>0)
{
returnds;
}
returnnull;
}
catch(Exception)
{
returnnull;
}
}
#endregion
#region插入数据
///
///插入数据
///
///路径
///节点
///元素名,非空时插入新元素,否则在该元素中插入属性
///属性名,非空时插入该元素属性值,否则插入元素值
///值
///使用示列:
///XMLProsess.Insert(path,"/Node","Element","","Value")
///XMLProsess.Insert(path,"/Node","Element","Attribute","Value")
///XMLProsess.Insert(path,"/Node","","Attribute","Value")
publicstaticvoidInsert(stringpath,stringnode,stringelement,stringattribute,stringvalue)
{
try
{
XmlDocumentdoc=newXmlDocument();
doc.Load(AppDomain.CurrentDomain.BaseDirectory.ToString()+path);
XmlNodexn=doc.SelectSingleNode(node);
if(element.Equals(""))
{
if(!attribute.Equals(""))
{
XmlElementxe=(XmlElement)xn;
xe.SetAttribute(attribute,value);
}
}
else
{
XmlElementxe=doc.CreateElement(element);
if(attribute.Equals(""))
xe.InnerText=value;
else
xe.SetAttribute(attribute,value);
xn.AppendChild(xe);
}
doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+path);
}
catch{}
}
///
///插入数据
///
///路径
///节点
///元素名,非空时插入新元素,否则在该元素中插入属性
///由XML属性名和值组成的二维数组
publicstaticvoidInsert(stringpath,stringnode,stringelement,string[][]strList)
{
try
{
XmlDocumentdoc=newXmlDocument();
doc.Load(AppDomain.CurrentDomain.BaseDirectory.ToString()+path);
XmlNodexn=doc.SelectSingleNode(node);
XmlElementxe=doc.CreateElement(element);
stringstrAttribute="";
stringstrValue="";
for(inti=0;i
///插入一行数据
///
///XML文件相对路径
///要插入行的列名数组,如:string[]Columns={"name","IsMarried"};
///要插入行每列的值数组,如:string[]ColumnValue={"XML大全","false"};
///成功返回true,否则返回false
publicstaticboolWriteXmlByDataSet(stringstrXmlPath,string[]Columns,string[]ColumnValue)
{
try
{
//根据传入的XML路径得到.XSD的路径,两个文件放在同一个目录下
stringstrXsdPath=strXmlPath.Substring(0,strXmlPath.IndexOf("."))+".xsd";
DataSetds=newDataSet();
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));//读XML架构,关系到列的数据类型
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataTabledt=ds.Tables[0];
DataRownewRow=dt.NewRow();//在原来的表格基础上创建新行
for(inti=0;i
///修改指定节点的数据
///
///节点
///值
publicvoidUpdate(stringnode,stringvalue)
{
try
{
XmlDocumentdoc=XMLLoad();
XmlNodexn=doc.SelectSingleNode(node);
xn.InnerText=value;
doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+XMLPath);
}
catch{}
}
///
///修改指定节点的数据
///
///路径
///节点
///值
///使用示列:
///XMLProsess.Insert(path,"/Node","Value")
///XMLProsess.Insert(path,"/Node","Value")
publicstaticvoidUpdate(stringpath,stringnode,stringvalue)
{
try
{
XmlDocumentdoc=XMLLoad(path);
XmlNodexn=doc.SelectSingleNode(node);
xn.InnerText=value;
doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+path);
}
catch{}
}
///
///修改指定节点的属性值(静态)
///
///路径
///节点
///属性名,非空时修改该节点属性值,否则修改节点值
///值
///使用示列:
///XMLProsess.Insert(path,"/Node","","Value")
///XMLProsess.Insert(path,"/Node","Attribute","Value")
publicstaticvoidUpdate(stringpath,stringnode,stringattribute,stringvalue)
{
try
{
XmlDocumentdoc=XMLLoad(path);
XmlNodexn=doc.SelectSingleNode(node);
XmlElementxe=(XmlElement)xn;
if(attribute.Equals(""))
xe.InnerText=value;
else
xe.SetAttribute(attribute,value);
doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+path);
}
catch{}
}
///
///更改符合条件的一条记录
///
///XML文件路径
///列名数组
///列值数组
///条件列名
///条件列值
publicstaticboolUpdateXmlRow(stringstrXmlPath,string[]Columns,string[]ColumnValue,stringstrWhereColumnName,stringstrWhereColumnValue)
{
try
{
stringstrXsdPath=strXmlPath.Substring(0,strXmlPath.IndexOf("."))+".xsd";
DataSetds=newDataSet();
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));//读XML架构,关系到列的数据类型
ds.ReadXml(GetXmlFullPath(strXmlPath));
//先判断行数
if(ds.Tables[0].Rows.Count>0)
{
for(inti=0;i
///删除节点值
///
///路径
///节点
///属性名,非空时删除该节点属性值,否则删除节点值
///值
///使用示列:
///XMLProsess.Delete(path,"/Node","")
///XMLProsess.Delete(path,"/Node","Attribute")
publicstaticvoidDelete(stringpath,stringnode)
{
try
{
XmlDocumentdoc=XMLLoad(path);
XmlNodexn=doc.SelectSingleNode(node);
xn.ParentNode.RemoveChild(xn);
doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+path);
}
catch{}
}
///
///删除数据
///
///路径
///节点
///属性名,非空时删除该节点属性值,否则删除节点值
///值
///使用示列:
///XMLProsess.Delete(path,"/Node","")
///XMLProsess.Delete(path,"/Node","Attribute")
publicstaticvoidDelete(stringpath,stringnode,stringattribute)
{
try
{
XmlDocumentdoc=XMLLoad(path);
XmlNodexn=doc.SelectSingleNode(node);
XmlElementxe=(XmlElement)xn;
if(attribute.Equals(""))
xn.ParentNode.RemoveChild(xn);
else
xe.RemoveAttribute(attribute);
doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+path);
}
catch{}
}
///
///删除所有行
///
///XML路径
publicstaticboolDeleteXmlAllRows(stringstrXmlPath)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables[0].Rows.Count>0)
{
ds.Tables[0].Rows.Clear();
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
///
///通过删除DataSet中指定索引行,重写XML以实现删除指定行
///
///要删除的行在DataSet中的Index值
publicstaticboolDeleteXmlRowByIndex(stringstrXmlPath,intiDeleteRow)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables[0].Rows.Count>0)
{
ds.Tables[0].Rows[iDeleteRow].Delete();
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
returntrue;
}
catch(Exception)
{
returnfalse;
}
}
///
///删除指定列中指定值的行
///
///XML相对路径
///列名
///指定值
publicstaticboolDeleteXmlRows(stringstrXmlPath,stringstrColumn,string[]ColumnValue)
{
try
{
DataSetds=newDataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if(ds.Tables[0].Rows.Count>0)
{
//判断行多还是删除的值多,多的for循环放在里面
if(ColumnValue.Length>ds.Tables[0].Rows.Count)
{
for(inti=0;i
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。