假设我有
<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>
答案 0 :(得分: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);