public int CompareTo(IcuDataObject other) { var _nodeTypeStrength = new Dictionary <XmlNodeType, int> { { XmlNodeType.Attribute, 1 }, { XmlNodeType.Element, 2 }, { XmlNodeType.Text, 3 } }; int result = _nodeTypeStrength[_nodeType].CompareTo(_nodeTypeStrength[other._nodeType]); if (result != 0) { return(result); } switch (_nodeType) { case XmlNodeType.Attribute: return(LdmlNodeComparer.CompareAttributeNames(_name, other._name)); case XmlNodeType.Element: return(LdmlNodeComparer.CompareElementNames(_name, other._name)); } return(0); }
private void CopyUntilElement(XmlWriter writer, XmlReader reader, string elementName) { Debug.Assert(writer != null); Debug.Assert(reader != null); Debug.Assert(!string.IsNullOrEmpty(elementName)); if (reader.NodeType == XmlNodeType.None) { reader.Read(); } while (!reader.EOF && reader.NodeType != XmlNodeType.EndElement && (reader.NodeType != XmlNodeType.Element || LdmlNodeComparer.CompareElementNames(reader.Name, elementName) < 0)) { // XmlWriter.WriteNode doesn't do anything if the node type is Attribute if (reader.NodeType == XmlNodeType.Attribute) { writer.WriteAttributes(reader, false); } else { writer.WriteNode(reader, false); } } }