2012-06-28 73 views
1

剛剛寫了一個web服務,並嘗試以xml形式返回SharePoint列表的列。但項目沒有正確嵌套XML元素沒有正確地嵌套在foreach中

  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和名稱屬性的父但沒有弄清楚我做錯了什麼。

必須是類似的東西

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

一切都有助於將appreaciated並感謝大家的閱讀

回答

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; 
+0

謝謝很多先生,你救了我的時間 –

+0

 沒問題:) – jrb