解决方案 »

  1.   

    http://blog.csdn.net/happy09li/article/details/7460521
      

  2.   

    XDocument, XmlDocument, XmlSerializer都可以,看需求了。
      

  3.   

     //利用递归获取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;
            }
      

  4.   

    http://blog.csdn.net/xianfajushi/article/details/11742249
      

  5.   

    读写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;
    }
      

  6.   

    自带类库,好像是sytem.xml,挺好用,看msdn