private XElement Serialize(TreeNode node, ContentFilter filter) { XElement elem = new XElement(node.Nodes.Count > 0 ? "group" : "item", new XAttribute("id", node.Name), new XAttribute("name", node.Text)); foreach (TreeNode child in node.Nodes) { var f = filter.Add(child.Name); elem.Add(Serialize(child, filter)); } return(elem); }