<?xml version="1.0" encoding="utf-8"?>
<root>
  <left>
<div1>1</div1>
  </left>
  <center>
  </center>
  <right>
  </right>
</root>public static void XmlMoveNode(string xmlPath,string oldNode,string newNode,string node)
{
...
}我想通过 XmlMoveNode("xxx.xml","root/left","root/right","div1");
实现移动节点。得到结果<?xml version="1.0" encoding="utf-8"?>
<root>
  <left>
  </left>
  <center>
  </center>
  <right>
<div1>1</div1>
  </right>
</root>XmlMoveNode方法要怎么实现,求解。最好有代码。谢谢!

解决方案 »

  1.   

    节点要先删除再添加。首先要拿到要删除节点的父节点。
    XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(Server.MapPath("../flash/dati.xml"));        XmlNode root = xmlDoc.SelectSingleNode("images");//查找<images>
            XmlElement xe1 = xmlDoc.CreateElement("thumb");//创建一个<thumb>节点
            xe1.SetAttribute("displayNum", "6");//设置该节点displayNum属性
            root.AppendChild(xe1);//添加到<images>节点中
            root.RemoveChild(你要删除的节点(此节点在image节点下));
            xmlDoc.Save(Server.MapPath("../flash/dati.xml"));
      

  2.   

    http://topic.csdn.net/u/20121016/16/d4e2e64b-2aed-4043-8597-ee0eee40d6c8.html
    http://topic.csdn.net/u/20121016/16/60ccf68f-6f7d-4079-9ed2-08bdd5c6abb6.html?49592
    http://topic.csdn.net/u/20121016/16/1d64b845-8da6-4be3-a45b-f8838b110101.html?44998
    发多了,回答一个相当于得分 160
      

  3.   

    新手,看不明白。能把
    public static void XmlMoveNode(string xmlPath,string oldNode,string newNode,string node)
    {
    ...
    }
    方法实现下吗?谢谢
      

  4.   

            //XmlMoveNode("..\\..\\test.xml", "//root/left", "//root/right", "//div1");
            public static void XmlMoveNode(string xmlPath, string oldNode, string newNode, string node)
            {
                XmlDocument xDoc = new XmlDocument();
                //加载app.config
                xDoc.Load(xmlPath);
                XmlNode xNode = xDoc.SelectSingleNode(oldNode);
                XmlNode targetNode = xNode.SelectSingleNode(node); ;
                if (targetNode == null)
                {
                    throw new Exception("Node not found:" + node);
                }
                else
                {
                    xNode.RemoveChild(targetNode);
                }
                XmlNode yNode = xDoc.SelectSingleNode(newNode);
                yNode.AppendChild(targetNode);
                xDoc.Save(xmlPath);
            }其实就是选择节点,remove,add
    有的地方还得加判断。