none
Парсинг XML RRS feed

  • Вопрос

  • Помогите пожалуйста набросать код, для вот какой задачки:

    Необходимо вытащить из множества 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

Ответы

Все ответы

  • Да, открывать каждый файл, только сразу через через 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
  • Нет, время в принципе не важно.

    Как я понимаю, ваш код, нужно как-то поместить в цикл!?

    9 апреля 2013 г. 13:22
  • У вас есть массив файлов 

    string[] filePath = Directory.GetFiles(@"D:\MyFolder\", "*.xml", SearchOption.AllDirectories);

    Вот его в цикле и обходите и вызывайте код, что предложил Brash_O


    Для связи [mail]

    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()); }

    }

    11 апреля 2013 г. 8:51