现已有一个xml文件.
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <Template id="1">
    <Theme>模板4</Theme>
    <Body>模板内bmbnmnm</Body>
  </Template>
  <Template id="2">
    <Theme>模板4</Theme>
    <Body>模板内容</Body>
  </Template>
</root>我已能取到上面xml里一条值并放到两个文本里,现在我就是想在文本里修改了它的值后,点击"保存"按钮后,它就又把文本框里修改的值再保存到这个xml里去.请问如何把修改后的值再保存到这个xml里去呢?

解决方案 »

  1.   

    Xmldocument xml = new XmlDocument();
    xml.Load("XXX.xml");
    XmlNode xNode = xml.GetElementsByTagName("Template")[n];
    xNode.InnerText = "修改内容";
    xml.Save("XXX.xml");
      

  2.   

    这个应该是要用到遍历,根据xml里的id号来修改,现在我就是不知道怎样进行遍历?
      

  3.   

    研究一下:  http://www.cnblogs.com/Roger52027/archive/2007/06/09/777586.html
      

  4.   


    public void SaveXml(string str1, string str2,string strxmlfile)
            {
                XmlDocument doc = new XmlDocument();
                //doc.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><Template id=\"1\"><Theme>模板4</Theme><Body>模板内bmbnmnm</Body></Template><Template id=\"2\"><Theme>模板4</Theme><Body>模板内容</Body></Template></root>");
                doc.Load(strxmlfile);
                XmlNodeList xnList = doc.SelectSingleNode("root").ChildNodes;
                foreach (XmlNode xn in xnList)
                {
                    if (xn.Attributes["ID"].InnerText == "1")
                    {
                        XmlNodeList xnchildlist = xn.ChildNodes;
                        foreach (XmlNode xn1 in xnchildlist)
                        {
                            XmlElement xe = (XmlElement)xn1;
                            if (xe.Name == "Theme")
                            {
                                xe.InnerText = str1;
                            }
                            if (xe.Name == "Body")
                            {
                                xe.InnerText = str2;
                            }
                        }
                    }
                }
                doc.Save(strxmlfile);
            }写代码的速度慢了,有待加强
      

  5.   


    XmlNode xNode = xml.GetElementsByTagName("Template")[n]
    请问一下,这个"n代表"什么呀?
      

  6.   

    不好意思,还写错了。
    if (xn.Attributes["ID"].InnerText == "1")
    应该是if(xn.Attributes["ID"].Value == "1")
      

  7.   

    xml.GetElementsByTagName("Template")
    会找到多个,  n 是下标
      

  8.   

    XmlDocument doc = new XmlDocument();
    doc.Load(fileName); XmlNode root=doc.SelectSingleNode("/root");XmlNodeList nodeList = node.SelectNodes("Template");foreach(XmlNode node in nodeList)
    {
      //foreach (XmlAttribute temp in node)
       //{//} 递归属性
    if(node.Attributes["id"]=="1")
    {  XmlNode themNode =node.SelectSingleNode("Theme");
      themNode.innerText="11111111111111111";  XmlNode themNode =node.SelectSingleNode("Theme");
    }}