有xml文档<root>
<nodes>
  <node><nodecode>1</nodecode></node>
  <node><nodecode>2</nodecode></node>
  <node><nodecode>3</nodecode></node>
  <node><nodecode>4</nodecode></node>
</nodes></root>我想操作XML文档,在
<node><nodecode>2</nodecode></node>
  <node><nodecode>3</nodecode></node>添加父节点nodes
也就是变成:
<root>
<nodes>
  <node><nodecode>1</nodecode></node>
  <nodes>
  <node><nodecode>2</nodecode></node>
  <node><nodecode>3</nodecode></node>
   </nodes>

  <node><nodecode>4</nodecode></node>
</nodes></root>请问c#代码怎样写?

解决方案 »

  1.   


            XmlDocument doc = new XmlDocument();
            string str = "<root><nodes>";
            str += "<node><nodecode>1</nodecode></node>";
            str += "<node><nodecode>2</nodecode></node>";
            str += "<node><nodecode>3</nodecode></node>";
            str += "<node><nodecode>4</nodecode></node>";
            str += "</nodes></root>";        doc.LoadXml(str);        XmlElement root = doc.DocumentElement;        XmlNode node2 = root.SelectSingleNode("descendant::node[nodecode='2']");
            XmlNode node3 = root.SelectSingleNode("descendant::node[nodecode='3']");        XmlNode nodes = root.FirstChild.CloneNode(false);
            XmlNode newNode = root.FirstChild.InsertAfter(nodes, root.FirstChild.FirstChild);        newNode.AppendChild(node2);
            newNode.AppendChild(node3);
      

  2.   

    在此<node> <nodecode>2 </nodecode> </node> 
    insertAfter一个<nodecode>1 </nodecode> 
    再把那两个添加到子结点,再删除。
    xml不通,主要是几乎不用。
    参考:
    http://blog.csdn.net/greatverve/archive/2008/12/10/3490741.aspx
    这里能简化常用操作。
      

  3.   

    string xml = @"<root> 
    <nodes> 
      <node> <nodecode>1</nodecode> </node> 
      <node> <nodecode>2</nodecode> </node> 
      <node> <nodecode>3</nodecode> </node> 
      <node> <nodecode>4</nodecode> </node> 
    </nodes> </root> 
    ";
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.LoadXml(xml);
                 
                XmlNode node2 = doc.SelectSingleNode(@"/root/nodes/node[nodecode='2']");
                XmlNode node3 = doc.SelectSingleNode(@"/root/nodes/node[nodecode='3']");            XmlNode parent = node2.ParentNode;
                if (parent != null)
                { 
                    XmlNode newP = doc.CreateElement("nodes");
                    newP.AppendChild(node2);
                    newP.AppendChild(node3);
                    parent.InsertAfter(newP,parent.FirstChild);
                }            xml = doc.InnerXml.ToString();