如何将XML中某个节点的值读取出来,将其数值+1再保存到该节点呢?请提供实例代码。一旦解决立即给分!

解决方案 »

  1.   

    XmlDocument doc=new XmlDocument();
    doc.Load(@"e:\test.xml");int i=int.Parse(doc.DocumentElement.ChildNodes[0].InnerText)+1;
    doc.DocumentElement.ChildNodes[0].InnerText=i.ToString();doc.Save(@"e:\test.xml");------------------------
    测试XML:
    <?xml version="1.0" encoding="gb2312"?>
    <Article>
      <BookName>11111</BookName>
    </Article>结果XML:
    <?xml version="1.0" encoding="gb2312"?>
    <Article>
      <BookName>11112</BookName>
    </Article>
      

  2.   

    这个不行吗?System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
    xmlDocument.LoadXml("c:\stat.xml");
    int iValue = Convert.ToInt32(xmlDocument.SelectSingleNode("//click").InnerText);
    xmlDocument.SelectSingleNode("//click").InnerText = iValue + 1;  
    xmlDocument.Save("c:\stat.xml");
      

  3.   

    cancersyf(fengzhimei) 汗。。你上次没贴Document.SelectSingleNode("//click").InnerText = iValue + 1;  这句……
    先谢谢2位,我研究研究!
      

  4.   

    cancersyf(fengzhimei) ,有个问题,("//click").前面干吗有2斜杠?
      

  5.   

    ("//click")中的//click是XPath语句,是查找所有节点名为click的节点集!!!
      

  6.   

    cancersyf(fengzhimei)兄下面这句好象有问题吧。xmlDocument.LoadXml("c:\stat.xml");LoadXml方法是加载XML字符串的,而不是加载文件的,加载文件用load吧!!!
      

  7.   

    2位大哥,真不好意思,还有个小问题……就是我的XML文件是生成的,不是确定的……请看一下我的代码:
                System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(folder.ToString() + "/" + maxID + ".xml"), System.IO.FileMode.Create);
                System.Xml.XmlTextWriter tw = new System.Xml.XmlTextWriter(fs, null);
                tw.Formatting = System.Xml.Formatting.Indented;
                tw.WriteStartDocument();
                tw.WriteStartElement("talk");
                //tw.WriteStartElement("reply");
    ["name"].ToString());
                tw.WriteElementString("content", txtContent.Text);
                tw.WriteElementString("title", txtTitle.Text);
                tw.WriteElementString("case", txtCase.Text);
                tw.WriteElementString("source", txtSource.Text);
                tw.WriteElementString("address", txtAddress.Text);
                tw.WriteElementString("date", txtDate.Text);
                tw.WriteElementString("click", "0");
    这样的话,我怎么样在doc.Load(@"e:\test.xml");里写出我确切要的那个xml呢?谢谢谢谢
      

  8.   

    System.Xml.XmlElement ID = doc.CreateElement("ID");
                ID.InnerText = maxID.ToString();
    我觉得已经很接近答案了……再拉兄弟一把呀!
      

  9.   

    还是没明白你的意思,你贴出你本来的XML文件,说一下想要那个节点值+1;
      

  10.   

    其实就是一个论坛发贴而已。我是想统计某个帖子的click节点,统计该页面的访问次数。
    刚才你给的代码,我指定某XML文件的话已经成了!谢谢先,但是因为我在后台每次发布都产生一个XML文件,根据我的ID节点,每次+1来生成。代码就是上面那段。我再贴我的XML文件:
    <?xml version="1.0"?>
    <talk>
      <content>5</content>
      <title>2222222222222222</title>
      <case>222222222222222</case>
      <source>222</source>
      <address />
      <date />
      <click>0</click>
    </talk>
      

  11.   

    try:XmlDocument doc=new XmlDocument();
    doc.Load(@"e:\test.xml");int i=int.Parse(doc.DocumentElement.LastChild.InnerText)+1;  //最后一个节点的值+1
    doc.DocumentElement.LastChild.InnerText=i.ToString();doc.Save(@"e:\test.xml");
      

  12.   

    BearRui(孤熊 | 阿弥陀佛!空!) 大概是我没说清楚吧,就是说我的xml文件有很多,但是你给的代码只能写在我的一个aspx文件里,因为这些xml都是在这个页面生成的,比如103.xml;104.xml等等。
    doc.Load(@"e:\folder.ToString() + "/" + maxID + ".xml"");我可以这样写吗?
      

  13.   

    可以这样啊:string sFile=e:\folder.ToString() + "/" + maxID + ".xml";doc.Load(sFile);
      

  14.   

    谢谢BearRui提醒,那就这样就可以了:System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument();
    xmlDocument.Load(@"c:\stat.xml");
    int iValue = Convert.ToInt32(xmlDocument.SelectSingleNode("talk/click").InnerText);
    xmlDocument.SelectSingleNode("talk/click").InnerText = iValue + 1;  
    xmlDocument.Save(@"c:\stat.xml");
      

  15.   

    我现在代码是这样:
            XmlDocument doc = new XmlDocument();
            string t1 = "../admin/data/BasketballHistory.xml";
            doc.Load(Server.MapPath(t1));//打开文件
            System.Xml.XmlNodeList nodeList = doc.GetElementsByTagName("ID");
            int id = (Int32.Parse(nodeList[nodeList.Count - 1].InnerText) );
            System.Text.StringBuilder maxID = new System.Text.StringBuilder(id.ToString());
            string sFile = "e:/SlamDunkChinesePortal/sdsite/admin/data" + "/" + maxID + "/"+maxID+".xml";
            doc.Load(sFile);
            int i = int.Parse(doc.DocumentElement.ChildNodes[0].InnerText) + 1;
            doc.DocumentElement.ChildNodes[0].InnerText = i.ToString();
            doc.Save(sFile);
    可是为什么不管我刷新哪个,都只有最后那个XML文件的click值+1呢?
    int id = (Int32.Parse(nodeList[nodeList.Count - 1].InnerText) );这句代码是取最后一个的ID的值吗?
    这个是/admin/data/BasketballHistory.xml的内容:
    <?xml version="1.0" encoding="utf-8"?>
    <list>
      <theme>
        <title>篮球运动传入中国</title>
        <ID>101</ID>
        <sort>0</sort>
        <date>2004-10-14</date>
      </theme>
      <theme>
        <title>使球从篮筐里落下来竟花了22个春秋</title>
        <ID>102</ID>
        <sort>0</sort>
        <date>2004-10-14</date>
      </theme>
      <theme>
        <title>篮球历史</title>
        <ID>103</ID>
        <sort>0</sort>
        <date>2004-10-14</date>
      </theme>
      <theme>
        <title>你好</title>
        <ID>104</ID>
        <sort>0</sort>
        <date>2004-10-20</date>
      </theme>
      <theme>
        <title>你好</title>
        <ID>105</ID>
        <sort>0</sort>
        <date>2004-10-20</date>
      </theme>
    </list>
      

  16.   

    System.Xml.XmlNodeList nodeList = doc.SelectNodes("/list/theme/ID");
    int id = (Int32.Parse(nodeList[nodeList.Count - 1].InnerText) );这里得到的ID应该是105
      

  17.   

    先结贴吧,大哥到这里接着指点我好吗?
    http://community.csdn.net/Expert/topic/3475/3475913.xml?temp=.9036676