【问题标题】:How to add new XML element to existing NodeList? [closed]如何将新的 XML 元素添加到现有的 NodeList? [关闭]
【发布时间】:2011-08-30 04:51:50
【问题描述】:

假设我有

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

是否可以在这种 XML 中创建新元素,以便将所有 &lt;qqq&gt; 作为子节点?

也就是说,最终的 XML 应该是这样的:

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

【问题讨论】:

  • 添加语言细节后,请标记此内容以引起版主注意,而不是 XML,以便重新打开。

标签: xml xmldocument


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多