Если вы используете .net 3.5 или более позднюю версию, вы можете использовать linq to Xml
Для данного XML-документа
<?xml version="1.0" encoding="utf-8" ?>
<root>
<storedProcedures>
<storedProcedure name="usp_GET_HOME_PAGE_DATA">
<resultSet name="Features"/>
<resultSet name="Highlights"/>
</storedProcedure>
<storedProcedure name="usp_GET_FEATURES" />
<storedProcedure name="usp_GET_FEATURE" />
<storedProcedure name="usp_UPDATE_FEATURE" />
<storedProcedure name="usp_GET_FEATURE_FOR_DISPLAY">
<resultSet name="CurrentFeature"/>
<resultSet name="OtherFeatures"/>
</storedProcedure>
<storedProcedure name="usp_GET_HIGHLIGHT_TITLES">
<resultSet name="Highlights"/>
</storedProcedure>
</storedProcedures>
</root>
Следующее выражение linq даст вам значенияАтрибуты «name» для всех узлов StorageProcedure
XDocument xDcoument = XDocument.Load(xmlStoredProcSchemeFile);
var storedProcedureNames = from doc in xDcoument.Descendants("storedProcedure")
select doc.Attribute("name").Value;
вы также можете использовать обычный синтаксис XPath.В приведенном ниже коде переменная node содержит узел, идентифицируемый именем «usp_GET_HOME_PAGE_DATA», а затем переменная attribute содержит все дочерние узлы (атрибуты) выбранного узла и его дочерние элементы.
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(@"C:\inetpub\wwwroot\ASPNETBuilder\BusinessLayer\DataAccessCodeGenerationSchema.xml");
var node = xmlDocument.DocumentElement.SelectSingleNode("./storedProcedures/storedProcedure[@name='usp_GET_HOME_PAGE_DATA']");
var attributes = node.SelectNodes("./resultSet/@name");