Beispiel #1
0
        /// <inheritdoc cref="ElementSelector"/>
        public bool CanBeCompared(XmlElement controlElement,
                                  XmlElement testElement)
        {
            XmlElement currentControl = controlElement;
            XmlElement currentTest    = testElement;

            // match on element names only for leading levels
            for (int currentLevel = 0; currentLevel <= levels - 2; currentLevel++)
            {
                if (!ElementSelectors.ByName(currentControl, currentTest) ||
                    !currentControl.HasChildNodes ||
                    !currentTest.HasChildNodes)
                {
                    return(false);
                }
                XmlNode n1 = GetFirstEligibleChild(currentControl);
                XmlNode n2 = GetFirstEligibleChild(currentTest);
                if (n1 is XmlElement && n2 is XmlElement)
                {
                    currentControl = n1 as XmlElement;
                    currentTest    = n2 as XmlElement;
                }
                else
                {
                    return(false);
                }
            }

            // finally compare the level containing the text child node
            return(ElementSelectors.ByNameAndText(currentControl,
                                                  currentTest));
        }