1

刚刚编写了一个 Web 服务并尝试将共享点列表的列返回为 xml。但是项目没有正确嵌套

            System.Xml.XmlNode node = doc.AppendChild(doc.CreateElement("Inventories"));
            foreach (ListItem item in items)
            {
                node = node.AppendChild(doc.CreateElement("Inventory"));
                node.AppendChild(doc.CreateElement("ID")).InnerText = Convert.ToString(item["ID"]);
                node.AppendChild(doc.CreateElement("Name")).InnerText = Convert.ToString(item["Server_Name"]) + " >> " + Convert.ToString(item["Computer_Name"]) + " >> " + Convert.ToString(item["IP"]);
            }
        }
            return doc.InnerXml;

这个返回

<inventories>
  <inventory>
    <ID></ID>
    <Name></Name>
    <ID></ID>
    <Name></Name>
    <ID></ID>
    <Name></Name>
  </inventory></inventory></inventory>
</inventories>

所以 foreach 循环中的库存项目有点奇怪,我只是希望它成为每个 ID 和 Name 属性的父级,但没有弄清楚我做错了什么。

必须是那样的

<inventories>
  <inventory>
    <ID></ID>
    <Name></Name>
  </inventory>
  <inventory>
    <ID></ID>
    <Name></Name>
  </inventory>
  <inventory>
    <ID></ID>
    <Name></Name>
  </inventory>
</inventories>

所有的帮助都将不胜感激,感谢大家的阅读

4

1 回答 1

3

您正在重用名称“节点”尝试:

System.Xml.XmlNode rootNode = doc.AppendChild(doc.CreateElement("Inventories"));
System.Xml.XmlNode childNode;
            foreach (ListItem item in items)
            {
                childNode =doc.CreateElement("Inventory");
                childNode .AppendChild(doc.CreateElement("ID")).InnerText = Convert.ToString(item["ID"]);
                childNode .AppendChild(doc.CreateElement("Name")).InnerText = Convert.ToString(item["Server_Name"]) + " >> " + Convert.ToString(item["Computer_Name"]) + " >> " + Convert.ToString(item["IP"]);
                rootNode.AppendChild(childNode);
            }
        }
        return doc.InnerXml;
于 2012-06-28T14:23:32.753 回答