private void decodeSourceNode(XmlNode node, HTMLParserContext context) { if (node.Attributes != null) { foreach (XmlAttribute attribute in node.Attributes) { AttributeProperties overridableNameAndDefaultValue = new AttributeProperties(); if (attribute.Value.Contains("#")) { string attributeValue = attribute.Value; attributeValue = attributeValue.Substring(attributeValue.IndexOf("#") + 1); string[] splitAttributeValues = attributeValue.Split('#'); //0 will be the name of the attribute to get from the childNode, 1 is the default value if it exists which is used if the value is not overriden in the childnode if (splitAttributeValues.Length > 1) { overridableNameAndDefaultValue.m_overrideableAttributeName = splitAttributeValues[0]; overridableNameAndDefaultValue.m_defaultAttributeValue = splitAttributeValues[1]; } else { overridableNameAndDefaultValue.m_overrideableAttributeName = splitAttributeValues[0]; overridableNameAndDefaultValue.m_defaultAttributeValue = ""; } } else { //This node is an override of something else so store the actual attribute value overridableNameAndDefaultValue.m_overrideableAttributeName = attribute.Value; overridableNameAndDefaultValue.m_defaultAttributeValue = attribute.Value; } m_attributes.Add(attribute.Name, overridableNameAndDefaultValue); } } //Should deal with inner text here that has no nodes in it. so we can replace this stuff too important for text as that is just a div if (node.ChildNodes != null) { foreach (XmlNode childNode in node.ChildNodes) { m_subNodes.Add(new HTMLDefinitionNode(childNode, context)); } } for (int counter = 0; counter < m_subNodes.Count; ++counter ) { //Need to check whether subnodes are definition nodes if they are we need to copy that node and deal with the attributes of that node. HTMLDefinitionNode subNode = m_subNodes[counter] as HTMLDefinitionNode; if (context.hasDefinition(subNode.m_name)) { var newSubNode = context.getDefinitionNode(subNode.m_name).Clone(context); foreach (XmlAttribute attribute in subNode.m_sourceNode.Attributes) //Still some issues here definitions in definitions are still broken { newSubNode.FillOutAttribute(attribute); m_subNodes[counter] = newSubNode; } } } }
private void decodeSourceNode(XmlNode node, HTMLParserContext context) { if (node.Attributes != null) { foreach (XmlAttribute attribute in node.Attributes) { AttributeProperties overridableNameAndDefaultValue = new AttributeProperties(); if (attribute.Value.Contains("#")) { string attributeValue = attribute.Value; attributeValue = attributeValue.Substring(attributeValue.IndexOf("#") + 1); string[] splitAttributeValues = attributeValue.Split('#'); //0 will be the name of the attribute to get from the childNode, 1 is the default value if it exists which is used if the value is not overriden in the childnode if (splitAttributeValues.Length > 1) { overridableNameAndDefaultValue.m_overrideableAttributeName = splitAttributeValues[0]; overridableNameAndDefaultValue.m_defaultAttributeValue = splitAttributeValues[1]; } else { overridableNameAndDefaultValue.m_overrideableAttributeName = splitAttributeValues[0]; overridableNameAndDefaultValue.m_defaultAttributeValue = ""; } } else { //This node is an override of something else so store the actual attribute value overridableNameAndDefaultValue.m_overrideableAttributeName = attribute.Value; overridableNameAndDefaultValue.m_defaultAttributeValue = attribute.Value; } m_attributes.Add(attribute.Name, overridableNameAndDefaultValue); } } //Should deal with inner text here that has no nodes in it. so we can replace this stuff too important for text as that is just a div if (node.ChildNodes != null) { foreach (XmlNode childNode in node.ChildNodes) { if (context.hasDefinition(childNode.Name)) { HTMLDefinitionNode defNode = context.getDefinitionNode(childNode.Name).Clone(context); //Need to fill out definition node here foreach (XmlAttribute attribute in defNode.SourceNode.Attributes) { defNode.FillOutAttribute(attribute); } m_subNodes.Add(defNode); } else { m_subNodes.Add(new HTMLDefinitionNode(childNode, context)); } } } }