大家元宵节快乐,请看下面灯谜:
用c#读写XML文件,xml文件的格式是固定的,例如<?xml version="1.0" encoding="gb2312" ?>
<root>
<msg id='pkqq' type='request' desc='文件申请'>
<date val='20110125'  desc='数据日期'/>
</msg>
</root>
这样,我想快速的定位到id和val,不知道如何读取和写入呢

解决方案 »

  1.   


    XDocument xdoc = XDocument.Load(你的xml文件路径);
    XElement xroot = xdoc.Root;
    string idstr = xroot.Element("msg").Attribute("id").Value;//这个是你ID的值
    string valstr = xroot.Element("msg").Element("date").Attribute("val").Value;//这个是你val的值
    //写入
    xroot.Element("msg").Attribute("id").Value="";
    xroot.Element("msg").Element("date").Attribute("val").Value="";
      

  2.   

    我来补充一点://读取
    XDocument xdoc = XDocument.Load(你的xml文件路径);
    XElement xroot = xdoc.Root;
    string idstr = xroot.Element("msg").Attribute("id").Value;//这个是你ID的值
    string valstr = xroot.Element("msg").Element("date").Attribute("val").Value;//这个是你val的值
    //写入
    xroot.Element("msg").Attribute("id").Value="";
    xroot.Element("msg").Element("date").Attribute("val").Value="";
    //没有Save可不行啊
    xdoc.Save(你的xml文件的路径);
      

  3.   

    我果然落伍了么?第一个反应还是 XPath ……
      

  4.   

    LINQ TO XML
    http://www.cnblogs.com/sunrack/articles/1081714.html
      

  5.   

           /// <summary>
            /// 更改xml节点属性(如:《father son="修改值value"/》)
            /// </summary>
            /// <param name="_path">xml 保存地址</param>
            /// <param name="Father">父节点名</param>
            /// <param name="Son">子节点名</param>
            /// <param name="_Value">修改的值</param>
            public void SaveAttribute(string _path, string _father, string _son, string _value)
            {
                loadXml(@_path);            XmlNodeList nodes = xmlDoc.SelectNodes("//" + _father);
                foreach (XmlNode node in nodes)
                {
                    if (node.Attributes[_son] != null)
                    {
                        node.Attributes[_son].Value = @_value;
                        break;
                    }
                }
                xmlDoc.Save(@_path);
            }
            /// <summary>
            /// 更改xml节点名(如:《father》《son》修改值value《/son》《/father》)
            /// </summary>
            /// <param name="_path">xml 保存地址</param>
            /// <param name="Father">父节点名</param>
            /// <param name="Son">子节点名</param>
            /// <param name="_Value">修改的值</param>
            public void SaveNodename(string _path, string _father, string _son, string _value)
            {
                loadXml(@_path);            XmlNodeList nodeList = xmlDoc.SelectSingleNode(_father).ChildNodes;
                foreach (XmlNode xn in nodeList)   
                {
                    XmlElement xe = (XmlElement)xn;
                    if (xe.Name == _son)   
                    {
                        xe.InnerText = @_value;   
                        break;   
                    }
                }
                xmlDoc.Save(@_path);
            }