Добавить новый xmlNode к нескольким xmlnodes с помощью xmlnodeslist просто сохраняет последние изменения?
Я пытаюсь добавить xmlNode в разных местах xmlDocument. Вот упрощенная версия моего файла XML:
<?xml version="1.0" encoding="UTF-16"?>
<Campus id="cmps-1">
<Location>
<Name>Boston, IN, USA</Name>
</Location>
<Building id="bldg-1" buildingType="TownHall">
<Area>1928.368051</Area>
<Name>Level 1</Name>
<Space id="sp-1" IdRef="bldg-stry-1">
<Name>5 BEDROOM 1</Name>
</Space>
<Space id="sp-2" IdRef="bldg-stry-1">
<Name>5 BEDROOM 1</Name>
</Space>
<Space id="sp-3" IdRef="bldg-stry-1">
<Name>5 BEDROOM 1</Name>
</Space>
</Building>
</Campus>
Я хочу добавить следующий xmlNode в узел "Space" после элемента "Name".
<Inf>
<Blow />
</Inf>
Вот код, который я использую:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"C:\mm.xml");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("mm", "http://www.mm.com");
XmlNodeList spaceNodes = xmlDoc.SelectNodes("descendant::mm:Space");
//node to be added
XmlNode infNode = xmlDoc.CreateNode(XmlNodeType.Element, "Inf", "http://www.mm.com");
XmlNode blowNode = xmlDoc.CreateNode(XmlNodeType.Element, "Blow", "http://www.mm.com");
infNode.AppendChild(blowNode);
foreach (XmlNode spaceN in spaceNodes)
{
spaceN.AppendChild(infNode);
}
xmlDoc.Save(@"C:\mmNew.xml");
Но код сохраняет его только для одного узла "Space" и теряет предыдущий, созданный в цикле. Таким образом, в конце добавляется только последний пробел. Я прочитал несколько аналогичных постов (пытался использовать цикл вместо foreach, а также использовал системный список), но не смог решить эту проблему. Буду признателен, если вы сможете мне помочь.
1 ответ
Решение
Я получил решение. Мне просто нужно определить параметры в цикле, чтобы решить эту проблему.