C#写一个读写XML文件的程序 学习一下:http://blog.csdn.net/chinacsharper/article/details/9246627 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/happy09li/article/details/7460521 XDocument, XmlDocument, XmlSerializer都可以,看需求了。 //利用递归获取xml的所有节点(元素也是节点) public void RecurseXml(XmlNode root,int index) { if (root == null) { return; } if (root is XmlElement) { 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); } } else if(root is XmlText) { string text=((XmlText)root).Value; tbxContent.Text+=text.PadLeft(text.Length+index)+Environment.NewLine; } else if (root is XmlAttribute) { string text = ((XmlAttribute)root).Value; tbxContent.Text += text.PadLeft(text.Length + index) + Environment.NewLine; } else if (root is XmlComment) { string text = ((XmlComment)root).Value; tbxContent.Text += text.PadLeft(text.Length + index) + Environment.NewLine; } } //获取属性值 public string ReadXml(XmlNode root,string keys) { string strReturn=""; if (root.Name.ToLower() == "phone") { XmlNodeList nodeList = root.ChildNodes; if(nodeList!=null) { foreach (XmlElement e in nodeList) { if (e.Attributes["name"].InnerXml.ToLower() == keys.ToLower()) { strReturn = e.Attributes["price"].InnerText; break; } } } } return strReturn; } http://blog.csdn.net/xianfajushi/article/details/11742249 读写XML数据文件//读取XML文件数据//调用公共类中的GetData方法,读取XML文件中的数据 private object GetData(DataTable dt,string sColumnName,string dColumnName,string sValue) { DataRow[] rows = dt.Select(sColumnName + "='" + sValue + "'"); if(rows.Length <= 0) return null; return rows[0][dColumnName]; }//通过内存数据表读取public static DataTable GetData(string path,string tableName) { //创建XmlDocument类的实例 XmlDocument xmldoc = new XmlDocument(); //调用XmlDocument类中的Load()方法加载XML文件 xmldoc.Load(path); //创建DataTable类型的变量dt DataTable dt = new DataTable(); ///获取根节点 XmlNode rootNode = xmldoc.SelectSingleNode("/" + tableName + "s"); //判断节点及其子节点是否为空,为空将返空值 if(rootNode == null) return null; if(rootNode.ChildNodes.Count <= 0) return null; ///创建保存记录的数据列 foreach(XmlAttribute attr in rootNode.ChildNodes[0].Attributes) { dt.Columns.Add(new DataColumn(attr.Name,typeof(string))); } ///创新获取数据节点的XPath string xmlPath = "/" + tableName + "s/" + tableName; //获取XML节点下的所有节点 XmlNodeList nodeList = xmldoc.SelectNodes(xmlPath); //遍历所有节点 foreach(XmlNode node in nodeList) { //创建数据表行,并在其中添加数据 DataRow row = dt.NewRow(); foreach(DataColumn column in dt.Columns) { ///读取每一个属性 row[column.ColumnName] = node.Attributes[column.ColumnName].Value; }//CodeGo.net/ //将数据表行添加到数据表中 dt.Rows.Add(row); } //返回DataTable对象dt return dt; }//写入XML数据public int AddTitle(string name,string body,int userID,int boardID,byte state) { 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类中public static int AddXmlData(string path,string tableName,params XmlParamter[] param) { //创建XmlDocument类的实例 XmlDocument xmldoc = new XmlDocument(); //调用XmlDocument类中的Load()方法加载XML文件 xmldoc.Load(path); ///选择根节点 XmlNode node = xmldoc.SelectSingleNode("/" + tableName + "s"); if(node == null) return -1; ///创建新记录的ID值 int newID; if (node.LastChild == null) { newID = 1; } else { newID = DataTypeConvert.ConvertToInt(node.LastChild.Attributes["ID"].Value) + 1; } if(newID < 1) return -1; ///创建一个新节点 XmlNode newNode = xmldoc.CreateNode(XmlNodeType.Element, tableName, null); if(newNode == null)return -1; ///添加ID的值 newNode.Attributes.Append(CreateNodeAttribute(xmldoc, "ID", newID.ToString())); ///添加新节点的属性 foreach(XmlParamter p in param) { newNode.Attributes.Append(CreateNodeAttribute(xmldoc, p.Name, p.Value)); } ///将新节点追加到根节点中 node.AppendChild(newNode); //保存XML文档 xmldoc.Save(path); return newID; } 自带类库,好像是sytem.xml,挺好用,看msdn asp.net C# 如何做日程提前三个月提醒 另开贴求combobox实际值和显示值 如何判断空值 C#中怎样嵌入html.chm文档 为什么?xml的问题 奇怪而又郁闷的问题!! 请教关于dataset绑定的问题 各路高手请进 为什么ftp://aspxdown:[email protected]/现在进不去啦? C#调用Windows API问题 我想做个简单的牌类游戏,有这样一个问题: 求助,win8.1系统vs2012停止运行是什么原因啊???如图
public void RecurseXml(XmlNode root,int index)
{
if (root == null)
{
return;
}
if (root is XmlElement)
{
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);
}
}
else if(root is XmlText)
{
string text=((XmlText)root).Value;
tbxContent.Text+=text.PadLeft(text.Length+index)+Environment.NewLine;
}
else if (root is XmlAttribute)
{
string text = ((XmlAttribute)root).Value;
tbxContent.Text += text.PadLeft(text.Length + index) + Environment.NewLine;
}
else if (root is XmlComment)
{
string text = ((XmlComment)root).Value;
tbxContent.Text += text.PadLeft(text.Length + index) + Environment.NewLine;
}
}
//获取属性值
public string ReadXml(XmlNode root,string keys)
{
string strReturn="";
if (root.Name.ToLower() == "phone")
{
XmlNodeList nodeList = root.ChildNodes;
if(nodeList!=null)
{
foreach (XmlElement e in nodeList)
{
if (e.Attributes["name"].InnerXml.ToLower() == keys.ToLower())
{
strReturn = e.Attributes["price"].InnerText;
break;
}
}
}
}
return strReturn;
}
//读取XML文件数据
//调用公共类中的GetData方法,读取XML文件中的数据
private object GetData(DataTable dt,string sColumnName,string dColumnName,string sValue)
{
DataRow[] rows = dt.Select(sColumnName + "='" + sValue + "'");
if(rows.Length <= 0) return null;
return rows[0][dColumnName];
}
//通过内存数据表读取
public static DataTable GetData(string path,string tableName)
{
//创建XmlDocument类的实例
XmlDocument xmldoc = new XmlDocument();
//调用XmlDocument类中的Load()方法加载XML文件
xmldoc.Load(path);
//创建DataTable类型的变量dt
DataTable dt = new DataTable();
///获取根节点
XmlNode rootNode = xmldoc.SelectSingleNode("/" + tableName + "s");
//判断节点及其子节点是否为空,为空将返空值
if(rootNode == null) return null;
if(rootNode.ChildNodes.Count <= 0) return null;
///创建保存记录的数据列
foreach(XmlAttribute attr in rootNode.ChildNodes[0].Attributes)
{
dt.Columns.Add(new DataColumn(attr.Name,typeof(string)));
}
///创新获取数据节点的XPath
string xmlPath = "/" + tableName + "s/" + tableName;
//获取XML节点下的所有节点
XmlNodeList nodeList = xmldoc.SelectNodes(xmlPath);
//遍历所有节点
foreach(XmlNode node in nodeList)
{
//创建数据表行,并在其中添加数据
DataRow row = dt.NewRow();
foreach(DataColumn column in dt.Columns)
{ ///读取每一个属性
row[column.ColumnName] = node.Attributes[column.ColumnName].Value;
}//CodeGo.net/
//将数据表行添加到数据表中
dt.Rows.Add(row);
}
//返回DataTable对象dt
return dt;
}
//写入XML数据
public int AddTitle(string name,string body,int userID,int boardID,byte state)
{
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类中
public static int AddXmlData(string path,string tableName,params XmlParamter[] param)
{
//创建XmlDocument类的实例
XmlDocument xmldoc = new XmlDocument();
//调用XmlDocument类中的Load()方法加载XML文件
xmldoc.Load(path);
///选择根节点
XmlNode node = xmldoc.SelectSingleNode("/" + tableName + "s");
if(node == null) return -1;
///创建新记录的ID值
int newID;
if (node.LastChild == null)
{
newID = 1;
}
else
{
newID = DataTypeConvert.ConvertToInt(node.LastChild.Attributes["ID"].Value) + 1;
}
if(newID < 1) return -1;
///创建一个新节点
XmlNode newNode = xmldoc.CreateNode(XmlNodeType.Element, tableName, null);
if(newNode == null)return -1;
///添加ID的值
newNode.Attributes.Append(CreateNodeAttribute(xmldoc, "ID", newID.ToString()));
///添加新节点的属性
foreach(XmlParamter p in param)
{
newNode.Attributes.Append(CreateNodeAttribute(xmldoc, p.Name, p.Value));
}
///将新节点追加到根节点中
node.AppendChild(newNode);
//保存XML文档
xmldoc.Save(path);
return newID;
}