Добавить новый 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 в узел «Пробел» после элемента «Имя».

<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");

Но код сохраняет его только для одного узла «Пробел» и теряет предыдущий, созданный в цикле. Таким образом, в конце добавляется только последний пробел. Я прочитал несколько похожих сообщений (попробовал цикл for вместо foreach и также использовал системный список), но не смог решить эту проблему. Я был бы признателен, если бы вы могли мне помочь.


person mrah    schedule 28.12.2013    source источник


Ответы (1)


Я получил решение. Мне просто нужно определить параметры в цикле, чтобы решить проблему.

person mrah    schedule 23.01.2014