1

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>

すべての助けに感謝します。読んでくれてありがとう

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 に答える