刚刚编写了一个Web服务并尝试将一个sharepoint列表的列作为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>
所有帮助都将得到应用,并感谢大家阅读
答案 0 :(得分:3)
您正在重复使用名称“node”尝试:
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;