using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.XPath; using System.IO; using System.Xml.Linq; using Wmhelp.XPath2; namespace XmlTest { class Program { static void Main(string[] args) { XmlDocument xDoc = new XmlDocument(); xDoc.Load("..\\..\\..\\vertical.xml"); XmlElement xRoot = xDoc.DocumentElement; XmlNodeList mySearch = xRoot.XPath2SelectNodes("//Object[ends-with(@Name,'_oper')]"); foreach (XmlNode oper in mySearch) { var operId = oper.XPath2SelectSingleNode("//Attribute[@Name='indexoper']").Attributes["Value"].Value; var operName = oper.XPath2SelectSingleNode("//Attribute[@Name='nameoper']").Attributes["Value"].Value; Console.WriteLine($"{operId} {operName}"); foreach (XmlNode step in oper.XPath2SelectNodes("//Object[ends-with(@Name,'_step')]")) { var stepNum = step.XPath2SelectSingleNode("//Attribute[@Name='numstep']").Attributes["Value"].Value; var stepName = step.XPath2SelectSingleNode("//Attribute[@Name='name']").Attributes["Value"].Value; Console.WriteLine($" {stepNum}. {stepName}"); } } Console.WriteLine("Press Any Key"); Console.ReadKey(); } } }