Yesterday I was learning how to work with LINQ. I tried to use LINQ to XML to parse the XML that results from calling methods on the Lists.asmx.
I made a small windows application with Visual Studio 2008 to fill a combo box with lists. When you select a list, a grid view is populated with the some information of the fields of the selected list.
The combo box is populated as follows:
XmlNode listsResult = listService.GetListCollection();
// Get the Title and the ID from the xml
XDocument results = XDocument.Parse(listsResult.OuterXml);
var lists = from item in results.Descendants(XName.Get("List", "http://schemas.microsoft.com/sharepoint/soap/"))
Title = item.Attribute("Title").Value,
Id = item.Attribute("ID").Value
ListsComboBox.DataSource = lists.ToList();
ListsComboBox.DisplayMember = "Title";
ListsComboBox.ValueMember = "Id";
The grid is populated as follows:
XmlNode result = listService.GetList(ListsComboBox.Text);
XDocument results = XDocument.Parse(result.OuterXml);
var fields = from item in results.Descendants(XName.Get("Field", "http://schemas.microsoft.com/sharepoint/soap/"))
where item.Attribute("ID") != null
DisplayName = item.Attribute("DisplayName").Value,
InternalName = item.Attribute("Name").Value,
TypeAsString = item.Attribute("Type").Value,
Id = item.Attribute("ID").Value ?? "empty"
FieldsDataGridView.DataSource = fields.ToList();
What a delight not to have to parse all that XML again!