Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 使用xmlnodeslist将新的xmlNode追加到多个xmlnodes是否只保留最后的更改?_Loops_Appendchild_Xmlnode_Xmlnodelist - Fatal编程技术网

Loops 使用xmlnodeslist将新的xmlNode追加到多个xmlnodes是否只保留最后的更改?

Loops 使用xmlnodeslist将新的xmlNode追加到多个xmlnodes是否只保留最后的更改?,loops,appendchild,xmlnode,xmlnodelist,Loops,Appendchild,Xmlnode,Xmlnodelist,我试图在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" buildin

我试图在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>

但是代码只为一个“空间”节点保存它,并释放在循环中创建的前一个节点。因此,在最后,只有最后一个空间添加了节点。我读过几篇类似的文章(尝试使用for-loop代替foreach,也使用了system-list),但无法解决这个问题。如果你能帮助我,我将不胜感激

我找到了解决办法。我只需要在循环中定义参数来解决这个问题

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