Я бы использовал классы XLINQ в System.Xml.Linq (это пространство имен и сборка, на которую вам нужно будет сослаться). Загрузите XML и XDocument:
XDocument doc = XDocument.Parse(someString);
Далее вы можете использовать рекурсию или псевдорекурсивный цикл для итерации по дочерним узлам. Вы можете выбрать свои дочерние узлы, такие как:
//if Directory is tag name of Directory XML
//Note: Root is just the root XElement of the document
var directoryElements = doc.Root.Elements("Directory");
//you get the idea
var fileElements = doc.Root.Elements("File");
Переменные directoryElements и fileElements будут IEnumerable типами, что означает, что вы можете использовать что-то вроде foreach для циклического прохождения всех элементов. Один из способов создать свои элементы - это что-то вроде этого:
List<MyFileType> files = new List<MyFileType>();
foreach(XElelement fileElement in fileElements)
{
files.Add(new MyFileType()
{
Prop1 = fileElement.Element("Prop1"), //assumes properties are elements
Prop2 = fileElement.Element("Prop2"),
});
}
В этом примере MyFileType - это тип, который вы создали для представления файлов. Это немного грубая атака, но она выполнит свою работу.
Если вы хотите использовать XPath, вам нужно будет , используя System.Xml.XPath.
<Ч />
Примечание по System.Xml против System.Xml.Linq
Существует ряд классов XML, которые были в .Net с 1.0 дня. Они живут (в основном) в System.Xml. В .Net 3.5 был выпущен замечательный новый набор классов XML под System.Xml.Linq. Я не могу переоценить, насколько лучше они работают, чем старые классы в System.Xml. Я очень рекомендую их любому программисту .Net и особенно кому-то, только начинающему заниматься .Net / C #.