Csharp/C#教程:C# XML操作类分享分享

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

XmlHelper

usingSystem.Xml; usingSystem.Data; namespaceDotNet.Utilities { ///<summary> ///Xml的操作公共类 ///</summary> publicclassXmlHelper { #region字段定义 ///<summary> ///XML文件的物理路径 ///</summary> privatestring_filePath=string.Empty; ///<summary> ///Xml文档 ///</summary> privateXmlDocument_xml; ///<summary> ///XML的根节点 ///</summary> privateXmlElement_element; #endregion #region构造方法 ///<summary> ///实例化XmlHelper对象 ///</summary> ///<paramname="xmlFilePath">Xml文件的相对路径</param> publicXmlHelper(stringxmlFilePath) { //获取XML文件的绝对路径 _filePath=SysHelper.GetPath(xmlFilePath); } #endregion #region创建XML的根节点 ///<summary> ///创建XML的根节点 ///</summary> privatevoidCreateXMLElement() { //创建一个XML对象 _xml=newXmlDocument(); if(DirFile.IsExistFile(_filePath)) { //加载XML文件 _xml.Load(this._filePath); } //为XML的根节点赋值 _element=_xml.DocumentElement; } #endregion #region获取指定XPath表达式的节点对象 ///<summary> ///获取指定XPath表达式的节点对象 ///</summary> ///<paramname="xPath">XPath表达式, ///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem" ///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点. ///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性. ///</param> publicXmlNodeGetNode(stringxPath) { //创建XML的根节点 CreateXMLElement(); //返回XPath节点 return_element.SelectSingleNode(xPath); } #endregion #region获取指定XPath表达式节点的值 ///<summary> ///获取指定XPath表达式节点的值 ///</summary> ///<paramname="xPath">XPath表达式, ///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem" ///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点. ///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性. ///</param> publicstringGetValue(stringxPath) { //创建XML的根节点 CreateXMLElement(); //返回XPath节点的值 return_element.SelectSingleNode(xPath).InnerText; } #endregion #region获取指定XPath表达式节点的属性值 ///<summary> ///获取指定XPath表达式节点的属性值 ///</summary> ///<paramname="xPath">XPath表达式, ///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem" ///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点. ///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性. ///</param> ///<paramname="attributeName">属性名</param> publicstringGetAttributeValue(stringxPath,stringattributeName) { //创建XML的根节点 CreateXMLElement(); //返回XPath节点的属性值 return_element.SelectSingleNode(xPath).Attributes[attributeName].Value; } #endregion #region新增节点 ///<summary> ///1.功能:新增节点。 ///2.使用条件:将任意节点插入到当前Xml文件中。 ///</summary> ///<paramname="xmlNode">要插入的Xml节点</param> publicvoidAppendNode(XmlNodexmlNode) { //创建XML的根节点 CreateXMLElement(); //导入节点 XmlNodenode=_xml.ImportNode(xmlNode,true); //将节点插入到根节点下 _element.AppendChild(node); } ///<summary> ///1.功能:新增节点。 ///2.使用条件:将DataSet中的第一条记录插入Xml文件中。 ///</summary> ///<paramname="ds">DataSet的实例,该DataSet中应该只有一条记录</param> publicvoidAppendNode(DataSetds) { //创建XmlDataDocument对象 XmlDataDocumentxmlDataDocument=newXmlDataDocument(ds); //导入节点 XmlNodenode=xmlDataDocument.DocumentElement.FirstChild; //将节点插入到根节点下 AppendNode(node); } #endregion #region删除节点 ///<summary> ///删除指定XPath表达式的节点 ///</summary> ///<paramname="xPath">XPath表达式, ///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem" ///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点. ///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性. ///</param> publicvoidRemoveNode(stringxPath) { //创建XML的根节点 CreateXMLElement(); //获取要删除的节点 XmlNodenode=_xml.SelectSingleNode(xPath); //删除节点 _element.RemoveChild(node); } #endregion//删除节点 #region保存XML文件 ///<summary> ///保存XML文件 ///</summary> publicvoidSave() { //创建XML的根节点 CreateXMLElement(); //保存XML文件 _xml.Save(this._filePath); } #endregion//保存XML文件 #region静态方法 #region创建根节点对象 ///<summary> ///创建根节点对象 ///</summary> ///<paramname="xmlFilePath">Xml文件的相对路径</param> privatestaticXmlElementCreateRootElement(stringxmlFilePath) { //定义变量,表示XML文件的绝对路径 stringfilePath=""; //获取XML文件的绝对路径 filePath=SysHelper.GetPath(xmlFilePath); //创建XmlDocument对象 XmlDocumentxmlDocument=newXmlDocument(); //加载XML文件 xmlDocument.Load(filePath); //返回根节点 returnxmlDocument.DocumentElement; } #endregion #region获取指定XPath表达式节点的值 ///<summary> ///获取指定XPath表达式节点的值 ///</summary> ///<paramname="xmlFilePath">Xml文件的相对路径</param> ///<paramname="xPath">XPath表达式, ///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem" ///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点. ///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性. ///</param> publicstaticstringGetValue(stringxmlFilePath,stringxPath) { //创建根对象 XmlElementrootElement=CreateRootElement(xmlFilePath); //返回XPath节点的值 returnrootElement.SelectSingleNode(xPath).InnerText; } #endregion #region获取指定XPath表达式节点的属性值 ///<summary> ///获取指定XPath表达式节点的属性值 ///</summary> ///<paramname="xmlFilePath">Xml文件的相对路径</param> ///<paramname="xPath">XPath表达式, ///范例1:@"Skill/First/SkillItem",等效于@"//Skill/First/SkillItem" ///范例2:@"Table[USERNAME='a']",[]表示筛选,USERNAME是Table下的一个子节点. ///范例3:@"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性. ///</param> ///<paramname="attributeName">属性名</param> 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私有方法 ///<summary> ///导入XML文件 ///</summary> ///<paramname="XMLPath">XML文件路径</param> privateXmlDocumentXMLLoad() { stringXMLFile=XMLPath; XmlDocumentxmldoc=newXmlDocument(); try { stringfilename=AppDomain.CurrentDomain.BaseDirectory.ToString()+XMLFile; if(File.Exists(filename))xmldoc.Load(filename); } catch(Exceptione) {} returnxmldoc; } ///<summary> ///导入XML文件 ///</summary> ///<paramname="XMLPath">XML文件路径</param> privatestaticXmlDocumentXMLLoad(stringstrPath) { XmlDocumentxmldoc=newXmlDocument(); try { stringfilename=AppDomain.CurrentDomain.BaseDirectory.ToString()+strPath; if(File.Exists(filename))xmldoc.Load(filename); } catch(Exceptione) {} returnxmldoc; } ///<summary> ///返回完整路径 ///</summary> ///<paramname="strPath">Xml的路径</param> privatestaticstringGetXmlFullPath(stringstrPath) { if(strPath.IndexOf(":")>0) { returnstrPath; } else { returnSystem.Web.HttpContext.Current.Server.MapPath(strPath); } } #endregion #region读取数据 ///<summary> ///读取指定节点的数据 ///</summary> ///<paramname="node">节点</param> ///使用示列: ///XMLProsess.Read("/Node","") ///XMLProsess.Read("/Node/Element[@Attribute='Name']") publicstringRead(stringnode) { stringvalue=""; try { XmlDocumentdoc=XMLLoad(); XmlNodexn=doc.SelectSingleNode(node); value=xn.InnerText; } catch{} returnvalue; } ///<summary> ///读取指定路径和节点的串联值 ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="attribute">属性名,非空时返回该属性值,否则返回串联值</param> ///使用示列: ///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; } ///<summary> ///读取指定路径和节点的属性值 ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="attribute">属性名,非空时返回该属性值,否则返回串联值</param> ///使用示列: ///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; } ///<summary> ///获取某一节点的所有孩子节点的值 ///</summary> ///<paramname="node">要查询的节点</param> 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; } ///<summary> ///获取某一节点的所有孩子节点的值 ///</summary> ///<paramname="node">要查询的节点</param> publicXmlNodeListReadAllChild(stringnode) { XmlDocumentdoc=XMLLoad(); XmlNodexn=doc.SelectSingleNode(node); XmlNodeListnodelist=xn.ChildNodes;//得到该节点的子节点 returnnodelist; } ///<summary> ///读取XML返回经排序或筛选后的DataView ///</summary> ///<paramname="strWhere">筛选条件,如:"name='kgdiwss'"</param> ///<paramname="strSort">排序条件,如:"Iddesc"</param> 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; } } ///<summary> ///读取XML返回DataSet ///</summary> ///<paramname="strXmlPath">XML文件相对路径</param> publicDataSetGetDataSetByXml(stringstrXmlPath) { try { DataSetds=newDataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables.Count>0) { returnds; } returnnull; } catch(Exception) { returnnull; } } #endregion #region插入数据 ///<summary> ///插入数据 ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="element">元素名,非空时插入新元素,否则在该元素中插入属性</param> ///<paramname="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param> ///<paramname="value">值</param> ///使用示列: ///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{} } ///<summary> ///插入数据 ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="element">元素名,非空时插入新元素,否则在该元素中插入属性</param> ///<paramname="strList">由XML属性名和值组成的二维数组</param> 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<strList.Length;i++) { for(intj=0;j<strList[i].Length;j++) { if(j==0) strAttribute=strList[i][j]; else strValue=strList[i][j]; } if(strAttribute.Equals("")) xe.InnerText=strValue; else xe.SetAttribute(strAttribute,strValue); } xn.AppendChild(xe); doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+path); } catch{} } ///<summary> ///插入一行数据 ///</summary> ///<paramname="strXmlPath">XML文件相对路径</param> ///<paramname="Columns">要插入行的列名数组,如:string[]Columns={"name","IsMarried"};</param> ///<paramname="ColumnValue">要插入行每列的值数组,如:string[]ColumnValue={"XML大全","false"};</param> ///<returns>成功返回true,否则返回false</returns> 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<Columns.Length;i++)//循环给一行中的各个列赋值 { newRow[Columns[i]]=ColumnValue[i]; } dt.Rows.Add(newRow); dt.AcceptChanges(); ds.AcceptChanges(); ds.WriteXml(GetXmlFullPath(strXmlPath)); returntrue; } catch(Exception) { returnfalse; } } #endregion #region修改数据 ///<summary> ///修改指定节点的数据 ///</summary> ///<paramname="node">节点</param> ///<paramname="value">值</param> publicvoidUpdate(stringnode,stringvalue) { try { XmlDocumentdoc=XMLLoad(); XmlNodexn=doc.SelectSingleNode(node); xn.InnerText=value; doc.Save(AppDomain.CurrentDomain.BaseDirectory.ToString()+XMLPath); } catch{} } ///<summary> ///修改指定节点的数据 ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="value">值</param> ///使用示列: ///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{} } ///<summary> ///修改指定节点的属性值(静态) ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param> ///<paramname="value">值</param> ///使用示列: ///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{} } ///<summary> ///更改符合条件的一条记录 ///</summary> ///<paramname="strXmlPath">XML文件路径</param> ///<paramname="Columns">列名数组</param> ///<paramname="ColumnValue">列值数组</param> ///<paramname="strWhereColumnName">条件列名</param> ///<paramname="strWhereColumnValue">条件列值</param> 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<ds.Tables[0].Rows.Count;i++) { //如果当前记录为符合Where条件的记录 if(ds.Tables[0].Rows[i][strWhereColumnName].ToString().Trim().Equals(strWhereColumnValue)) { //循环给找到行的各列赋新值 for(intj=0;j<Columns.Length;j++) { ds.Tables[0].Rows[i][Columns[j]]=ColumnValue[j]; } ds.AcceptChanges();//更新DataSet ds.WriteXml(GetXmlFullPath(strXmlPath));//重新写入XML文件 returntrue; } } } returnfalse; } catch(Exception) { returnfalse; } } #endregion #region删除数据 ///<summary> ///删除节点值 ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param> ///<paramname="value">值</param> ///使用示列: ///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{} } ///<summary> ///删除数据 ///</summary> ///<paramname="path">路径</param> ///<paramname="node">节点</param> ///<paramname="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param> ///<paramname="value">值</param> ///使用示列: ///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{} } ///<summary> ///删除所有行 ///</summary> ///<paramname="strXmlPath">XML路径</param> 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; } } ///<summary> ///通过删除DataSet中指定索引行,重写XML以实现删除指定行 ///</summary> ///<paramname="iDeleteRow">要删除的行在DataSet中的Index值</param> 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; } } ///<summary> ///删除指定列中指定值的行 ///</summary> ///<paramname="strXmlPath">XML相对路径</param> ///<paramname="strColumn">列名</param> ///<paramname="ColumnValue">指定值</param> 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<ds.Tables[0].Rows.Count;i++) { for(intj=0;j<ColumnValue.Length;j++) { if(ds.Tables[0].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j])) { ds.Tables[0].Rows[i].Delete(); } } } } else { for(intj=0;j<ColumnValue.Length;j++) { for(inti=0;i<ds.Tables[0].Rows.Count;i++) { if(ds.Tables[0].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j])) { ds.Tables[0].Rows[i].Delete(); } } } } ds.WriteXml(GetXmlFullPath(strXmlPath)); } returntrue; } catch(Exception) { returnfalse; } } #endregion } } 您可能感兴趣的文章:C#使用XmlDocument或XDocument创建xml文件C#实现XML文件读取C#xmlSerializer简单用法示例c#读取XML多级子节点C#读写XML(代码分享)C#操作XML文件步骤

标签: 操作

C#条码生成类分享

C#连接MySQL的两个简单代码示例

上述就是C#学习教程:C# XML操作类分享分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/907891.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐