Catrobat.IDE.Core.Utilities.Helpers.XPathHelper.GetElement C# (CSharp) Method

GetElement() public static method

public static GetElement ( System.Xml.Linq.XElement referenceElement, string xPath ) : System.Xml.Linq.XElement
referenceElement System.Xml.Linq.XElement
xPath string
return System.Xml.Linq.XElement
        public static XElement GetElement(XElement referenceElement, string xPath)
        {
            var parts = xPath.Split('/');
            var currentElement = referenceElement;
            foreach (var part in parts)
            {
                if (part == "..")
                {
                    currentElement = currentElement.Parent;
                }
                else
                {
                    var splitPath = part.Split('[');
                    var childElementName = splitPath[0];
                    var index = 0;

                    if (splitPath.Length > 1)
                    {
                        var indexAsString = splitPath[1].Split(']')[0];

                        // numbering starts with 1
                        index = int.Parse(indexAsString) - 1;
                    }

                    currentElement = currentElement.Elements(childElementName).ElementAtOrDefault(index);
                }
                if (currentElement == null) break;
            }

            return currentElement;
        }

Usage Example

        public static bool HasReferenceTo(this XElement element, XElement target)
        {
            var referenceAttribute = element.Attribute(ReferenceAttributeName);

            return(referenceAttribute != null &&
                   XPathHelper.GetElement(element, referenceAttribute.Value) == target);
        }
All Usage Examples Of Catrobat.IDE.Core.Utilities.Helpers.XPathHelper::GetElement