使用 xmlnodeslist 将新的 xmlNode 附加到多个 xmlnode 只会保留最后的更改



我正在尝试在xmlDocument的不同位置附加一个xmlNode。这是我的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");

但是代码只为一个"Space"节点保存它,并丢失在循环中创建的前一个节点。因此,最后只有最后一个空格添加了节点。我已经阅读了一些类似的帖子(尝试了循环而不是每个,也使用了系统列表),但无法解决这个问题。如果您能帮助我,我将不胜感激。

我得到了解决方案。我只需要定义循环中的参数即可解决问题。

相关内容

  • 没有找到相关文章

最新更新