/// <summary>Finds an attribute by name in an XML element.</summary> /// <returns>The value associated with the named attribute, or null if no attribute with <paramref name="name" /> exists.</returns> /// <param name="name">The name of the attribute for which to search. </param> /// <exception cref="T:System.ArgumentNullException">The <paramref name="name" /> parameter is null. </exception> public string Attribute(string name) { if (name == null) { throw new ArgumentNullException("name"); } SecurityElement.SecurityAttribute attribute = this.GetAttribute(name); return((attribute != null) ? attribute.Value : null); }
internal SecurityElement.SecurityAttribute GetAttribute(string name) { if (this.attributes != null) { foreach (object obj in this.attributes) { SecurityElement.SecurityAttribute securityAttribute = (SecurityElement.SecurityAttribute)obj; if (securityAttribute.Name == name) { return(securityAttribute); } } } return(null); }
internal SecurityElement(SecurityElement se) { this.Tag = se.Tag; this.Text = se.Text; if (se.attributes != null) { foreach (object obj in se.attributes) { SecurityElement.SecurityAttribute securityAttribute = (SecurityElement.SecurityAttribute)obj; this.AddAttribute(securityAttribute.Name, securityAttribute.Value); } } if (se.children != null) { foreach (object obj2 in se.children) { SecurityElement child = (SecurityElement)obj2; this.AddChild(child); } } }
private void ToXml(ref StringBuilder s, int level) { s.Append("<"); s.Append(this.tag); if (this.attributes != null) { s.Append(" "); for (int i = 0; i < this.attributes.Count; i++) { SecurityElement.SecurityAttribute securityAttribute = (SecurityElement.SecurityAttribute) this.attributes[i]; s.Append(securityAttribute.Name).Append("=\"").Append(SecurityElement.Escape(securityAttribute.Value)).Append("\""); if (i != this.attributes.Count - 1) { s.Append(Environment.NewLine); } } } if ((this.text == null || this.text == string.Empty) && (this.children == null || this.children.Count == 0)) { s.Append("/>").Append(Environment.NewLine); } else { s.Append(">").Append(SecurityElement.Escape(this.text)); if (this.children != null) { s.Append(Environment.NewLine); foreach (object obj in this.children) { SecurityElement securityElement = (SecurityElement)obj; securityElement.ToXml(ref s, level + 1); } } s.Append("</").Append(this.tag).Append(">").Append(Environment.NewLine); } }
/// <summary>Compares two XML element objects for equality.</summary> /// <returns>true if the tag, attribute names and values, child elements, and text fields in the current XML element are identical to their counterparts in the <paramref name="other" /> parameter; otherwise, false.</returns> /// <param name="other">An XML element object to which to compare the current XML element object. </param> public bool Equal(SecurityElement other) { if (other == null) { return(false); } if (this == other) { return(true); } if (this.text != other.text) { return(false); } if (this.tag != other.tag) { return(false); } if (this.attributes == null && other.attributes != null && other.attributes.Count != 0) { return(false); } if (other.attributes == null && this.attributes != null && this.attributes.Count != 0) { return(false); } if (this.attributes != null && other.attributes != null) { if (this.attributes.Count != other.attributes.Count) { return(false); } foreach (object obj in this.attributes) { SecurityElement.SecurityAttribute securityAttribute = (SecurityElement.SecurityAttribute)obj; SecurityElement.SecurityAttribute attribute = other.GetAttribute(securityAttribute.Name); if (attribute == null || securityAttribute.Value != attribute.Value) { return(false); } } } if (this.children == null && other.children != null && other.children.Count != 0) { return(false); } if (other.children == null && this.children != null && this.children.Count != 0) { return(false); } if (this.children != null && other.children != null) { if (this.children.Count != other.children.Count) { return(false); } for (int i = 0; i < this.children.Count; i++) { if (!((SecurityElement)this.children[i]).Equal((SecurityElement)other.children[i])) { return(false); } } } return(true); }