Лучший отвечающий
Парсинг XML

Вопрос
-
Помогите пожалуйста набросать код, для вот какой задачки:
Необходимо вытащить из множества xml файлов по заданному тегу его содержимое (этого тега). Тег во всех файлах одинаковый. Файлы лежат в разных папках внутри одной папки.
Например структура XML:
<title>Some Title</title>
<body>Some text</body>
Мне нужно просмотреть все папки внутри одной папки на диске, внутри этих папок, просмотреть все xml файлы, и повыдергивать все Some Title по заданному тегу <title></title> И все это дело сохранить в текстовый файлик.string[] filePath = Directory.GetFiles(@"D:\MyFolder\", "*.xml", SearchOption.AllDirectories);
а вот, как дальше?
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
Открывать каждый файл ?
9 апреля 2013 г. 12:47
Ответы
-
List<string> values = new List<string>();
foreach (var filename in Directory.GetFiles(...))
{ using (var xmlReader = new XmlTextReader(fileName)) {
xmlReader.ReadToFollwing("title");
values.Add(reader.ReadElementContentAsString()); }
}
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 апреля 2013 г. 9:43
11 апреля 2013 г. 8:51
Все ответы
-
Да, открывать каждый файл, только сразу через через XDocument.Load(filePath), чтобы можно было тег быстрее выдернуть.9 апреля 2013 г. 13:04Модератор
-
да придется открывать каждый файл и искать в нем нужный вам тег.
Если файлов много и время выполнения критично то лучше использовать XMLReader он быстрее работает с файлом
using (var xmlReader = new XmlTextReader(fileName)) {
xmlReader.ReadToFollwing("title");
var neededText = reader.ReadElementContentAsString(); }
- Изменено Brash_O 9 апреля 2013 г. 13:17
9 апреля 2013 г. 13:16 -
Нет, время в принципе не важно.
Как я понимаю, ваш код, нужно как-то поместить в цикл!?
- Изменено Andrey Langovoy 9 апреля 2013 г. 13:23
9 апреля 2013 г. 13:22 -
11 апреля 2013 г. 8:44
-
List<string> values = new List<string>();
foreach (var filename in Directory.GetFiles(...))
{ using (var xmlReader = new XmlTextReader(fileName)) {
xmlReader.ReadToFollwing("title");
values.Add(reader.ReadElementContentAsString()); }
}
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 11 апреля 2013 г. 9:43
11 апреля 2013 г. 8:51