2011-05-21 74 views
-3

假设我有如何将新的XML元素添加到现有的NodeList?

<Start> 
    <abc> 
    ... 
    .. 
    </abc> 
    <qqq id = 1> 
    ... 
    ... 
    ... 
    </qqq> 
    <qqq id = 2> 
    ... 
    ... 
    ... 
    </qqq> 
</Start> 

是否有可能在这种XML来创建新的元素,使其通吃<qqq>的子节点?

即最终的XML应该是这样的:

<Start> 
    <abc> 
    ... 
    ... 
    </abc> 
    <Begin name = myname> 
     <qqq id = 1> 
     ... 
     ... 
     ... 
     </qqq> 
     <qqq id = 2> 
     ... 
     ... 
     ... 
     </qqq> 
    </Begin> 
</Start> 
+2

你用什么语言? – svick 2011-05-21 11:58:42

+0

一旦添加了语言细节,请超过XML以便重新打开。 – 2011-05-21 17:11:09

回答

1

假设你正在使用C#和要使用XmlDocument,你可以做这样的:

var doc = new XmlDocument(); 
doc.LoadXml(xml); 

var root = doc.DocumentElement; 

var begin = doc.CreateElement("Begin"); 
var beginAttribute = doc.CreateAttribute("name"); 
beginAttribute.Value = "myname"; 
begin.Attributes.Append(beginAttribute); 

var qqqs = root.GetElementsByTagName("qqq").Cast<XmlNode>().ToArray(); 

foreach (XmlNode qqq in qqqs) 
{ 
    root.RemoveChild(qqq); 
    begin.AppendChild(qqq); 
} 

root.AppendChild(begin); 

但使用XDocument要容易得多:

var doc = XDocument.Parse(xml); 

var qqqs = doc.Root.Elements("qqq"); 

var begin = new XElement("Begin", new XAttribute("name", "myname"), qqqs); 

qqqs.Remove(); 

doc.Root.Add(begin); 
相关问题