问题描述
写一程序可以修改写入读取XML文件的程序
解决方案
解决方案二:
学习一下:
解决方案三:
解决方案四:
XDocument,XmlDocument,XmlSerializer都可以,看需求了。
解决方案五:
//利用递归获取xml的所有节点(元素也是节点)publicvoidRecurseXml(XmlNoderoot,intindex){if(root==null){return;}if(rootisXmlElement){tbxContent.Text+=root.Name.PadLeft(root.Name.Length+index)+Environment.NewLine;//换行if(root.HasChildNodes){RecurseXml(root.FirstChild,index+1);}if(root.NextSibling!=null){RecurseXml(root.NextSibling,index+2);}}elseif(rootisXmlText){stringtext=((XmlText)root).Value;tbxContent.Text+=text.PadLeft(text.Length+index)+Environment.NewLine;}elseif(rootisXmlAttribute){stringtext=((XmlAttribute)root).Value;tbxContent.Text+=text.PadLeft(text.Length+index)+Environment.NewLine;}elseif(rootisXmlComment){stringtext=((XmlComment)root).Value;tbxContent.Text+=text.PadLeft(text.Length+index)+Environment.NewLine;}}//获取属性值publicstringReadXml(XmlNoderoot,stringkeys){stringstrReturn="";if(root.Name.ToLower()=="phone"){XmlNodeListnodeList=root.ChildNodes;if(nodeList!=null){foreach(XmlElementeinnodeList){if(e.Attributes["name"].InnerXml.ToLower()==keys.ToLower()){strReturn=e.Attributes["price"].InnerText;break;}}}}returnstrReturn;}
解决方案六:
网上一搜一箩筐。。。。。。不过你要就着网上那样写的方式去访问和传参。
解决方案七:
解决方案八:
读写XML数据文件//读取XML文件数据//调用公共类中的GetData方法,读取XML文件中的数据privateobjectGetData(DataTabledt,stringsColumnName,stringdColumnName,stringsValue){DataRow[]rows=dt.Select(sColumnName+"='"+sValue+"'");if(rows.Length<=0)returnnull;returnrows[0][dColumnName];}//通过内存数据表读取publicstaticDataTableGetData(stringpath,stringtableName){//创建XmlDocument类的实例XmlDocumentxmldoc=newXmlDocument();//调用XmlDocument类中的Load()方法加载XML文件xmldoc.Load(path);//创建DataTable类型的变量dtDataTabledt=newDataTable();///获取根节点XmlNoderootNode=xmldoc.SelectSingleNode("/"+tableName+"s");//判断节点及其子节点是否为空,为空将返空值if(rootNode==null)returnnull;if(rootNode.ChildNodes.Count<=0)returnnull;///创建保存记录的数据列foreach(XmlAttributeattrinrootNode.ChildNodes[0].Attributes){dt.Columns.Add(newDataColumn(attr.Name,typeof(string)));}///创新获取数据节点的XPathstringxmlPath="/"+tableName+"s/"+tableName;//获取XML节点下的所有节点XmlNodeListnodeList=xmldoc.SelectNodes(xmlPath);//遍历所有节点foreach(XmlNodenodeinnodeList){//创建数据表行,并在其中添加数据DataRowrow=dt.NewRow();foreach(DataColumncolumnindt.Columns){///读取每一个属性row[column.ColumnName]=node.Attributes[column.ColumnName].Value;}//CodeGo.net///将数据表行添加到数据表中dt.Rows.Add(row);}//返回DataTable对象dtreturndt;}//写入XML数据publicintAddTitle(stringname,stringbody,intuserID,intboardID,bytestate){XmlParamter[]param={XmlDatabase.CreateInsertParameter("Name",name),XmlDatabase.CreateInsertParameter("Body",body),XmlDatabase.CreateInsertParameter("UserID",userID.ToString()),XmlDatabase.CreateInsertParameter("BoardID",boardID.ToString()),XmlDatabase.CreateInsertParameter("CreateDate",DateTime.Now.ToShortDateString()),XmlDatabase.CreateInsertParameter("VisitNum","0"),XmlDatabase.CreateInsertParameter("ReplyNum","0"),XmlDatabase.CreateInsertParameter("State",state.ToString())};return(XmlDatabase.AddXmlData(XmlBBS.TitleFilePath,TitleTableName,param));}//添加节点数据封装在XmlDatabase类中publicstaticintAddXmlData(stringpath,stringtableName,paramsXmlParamter[]param){//创建XmlDocument类的实例XmlDocumentxmldoc=newXmlDocument();//调用XmlDocument类中的Load()方法加载XML文件xmldoc.Load(path);///选择根节点XmlNodenode=xmldoc.SelectSingleNode("/"+tableName+"s");if(node==null)return-1;///创建新记录的ID值intnewID;if(node.LastChild==null){newID=1;}else{newID=DataTypeConvert.ConvertToInt(node.LastChild.Attributes["ID"].Value)+1;}if(newID<1)return-1;///创建一个新节点XmlNodenewNode=xmldoc.CreateNode(XmlNodeType.Element,tableName,null);if(newNode==null)return-1;///添加ID的值newNode.Attributes.Append(CreateNodeAttribute(xmldoc,"ID",newID.ToString()));///添加新节点的属性foreach(XmlParamterpinparam){newNode.Attributes.Append(CreateNodeAttribute(xmldoc,p.Name,p.Value));}///将新节点追加到根节点中node.AppendChild(newNode);//保存XML文档xmldoc.Save(path);returnnewID;}
解决方案九:
自带类库,好像是sytem.xml,挺好用,看msdn