private void Munge(XmlElement el) { XmlAttribute cond = GetConditional(el); if (cond != null) { if (!new XppParser(cond.Value).Evaluate(this)) { el.ParentNode.RemoveChild(el); return; } else { el.RemoveAttributeNode(cond); } } XmlNodeList nodes = el.ChildNodes; XmlNode[] children = new XmlNode[nodes.Count]; for (int i = 0; i < children.Length; i++) children[i] = nodes[i]; foreach (XmlNode child in children) { if (child is XmlElement) Munge((XmlElement)child); } }
private void SortAttributesAttributes(XmlElement el) { ArrayList al = new ArrayList(); foreach (XmlAttribute a in el.Attributes) al.Add(a.Name); al.Sort(); string[] names = (string[])al.ToArray(typeof(string)); al.Clear(); foreach (string name in names) al.Add(el.RemoveAttributeNode( el.GetAttributeNode(name))); foreach (XmlAttribute a in al) // Exclude xmlns="" here. if (a.Name != "xmlns")// || a.Value != String.Empty) el.SetAttributeNode(a); }
private void OnDataTableRowRollback(DataRowChangeEventArgs args) { if (!raiseDataSetEvents) { return; } bool escapedRaiseDocumentEvents = raiseDocumentEvents; raiseDocumentEvents = false; try { DataRow r = args.Row; XmlElement el = GetElementFromRow(r); if (el == null) { return; } DataTable tab = r.Table; ArrayList al = new ArrayList(); foreach (XmlAttribute attr in el.Attributes) { DataColumn col = tab.Columns [XmlHelper.Decode(attr.LocalName)]; if (col != null) { if (r.IsNull(col)) { // should be removed al.Add(attr); } else { attr.Value = r [col].ToString(); } } } foreach (XmlAttribute attr in al) { el.RemoveAttributeNode(attr); } al.Clear(); foreach (XmlNode child in el.ChildNodes) { if (child.NodeType == XmlNodeType.Element) { DataColumn col = tab.Columns [XmlHelper.Decode(child.LocalName)]; if (col != null) { if (r.IsNull(col)) { al.Add(child); } else { child.InnerText = r [col].ToString(); } } } } foreach (XmlNode n in al) { el.RemoveChild(n); } } finally { raiseDocumentEvents = escapedRaiseDocumentEvents; } }