// System.Xml.Linq.XContainer static IEnumerable <JsNode> GetDescendants(JsNode node, bool self) { if (self) { yield return(node); } var list = node.Children().ToList(); for (var i = 0; i < list.Count; i++) { var child = list[i]; yield return(child); var children = child.Children(); if (children.Contains(null)) { var x = node.ToParentedNode().Descendants().ToList(); var xx = x.Where(t => t.Node == null).FirstOrDefault(); } list.AddRange(children); } }
static IEnumerable <JsParentedNode> ParentedChildren(this JsNode node) { return(node.ToParentedNode().Children()); }