1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Xml + C# (read/write/seek)

Тема в разделе ".NET", создана пользователем Real-Mulik, 27 июл 2006.

Статус темы:
Закрыта.
  1. Real-Mulik

    Real-Mulik Гость

    С помощью какого объекта из System.XML можно быстро и надежно (в частности) прочитать данные? Хотя про операции записи и поиска тоже интересно узнать.
     
  2. NikSoft

    NikSoft Гость

    Используй System.XML.XMLTextReader
     
  3. xopap

    xopap Гость

    Класс XmlTextReader применяется для быстрого однонаправленного чтения потока XML-данных. Поэтому в вашем случае он лучший. Этот класс прочитывает документ попорядку сверху-вниз, поэтому можете использовать его для поиска. Это быстрый класс.
    Класс XmlTextWriter аналогично - однонаправленная некешируемая запись.
    Также есть класс XmlDocument. Он использует W3C DOM модель, т.е. загружает документ в память и работает с их "виртуальной копией". DOM представляет документ в виде дерева. XmlDocument наиболее полезен в том случае, если нужно загрузить XML-документ в память для того, чтобы изменить атрибуты узлов, добавить или удалить новые элементы. Этот класс медленнее двух предыдущих.
    Использование XML класса зависит от Вашей цели.
     
  4. Real-Mulik

    Real-Mulik Гость

    <!--QuoteBegin-NikSoft+28:07:2006, 05:36 -->
    <span class="vbquote">(NikSoft @ 28:07:2006, 05:36 )</span><!--QuoteEBegin-->Используй System.XML.XMLTextReader
    [snapback]41176" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Я использовал метод Read() и ReadString() однако при организации поиска появились ряд проблем: Как только я обращаюсь к одному или другому методу, этот класс считывает уже следующую строку, а в некоторых случаях ведь необходимо считать строку, проверить её и её же вывести.. я использовал примерно такой код:
    Код (Text):
    if ([b]reader.Name == "company"[/b]){
    s = reader.ReadString();
    if (EnterText == s){
    Console.WriteLine("Was found:");
    Console.WriteLine("company name: {0}",reader.ReadString());}}
    Однако при обращении к reader.Name программа переходит на новую запись и на экране появляется пуcтое поле! :)
     
  5. xopap

    xopap Гость

    В этом и заключается однонаправленность чтения классом XmlTextReader: по каждому обращению к методу Read() он читает дальше. Я не понимаю, зачем в Вашем коде надо вызывать reader.ReadString() в WriteLine. Возможно Вам нужен метод reader.GetAttribute("...") или что-то вроде него.
    Обычно работа с XmlTextReader'ом организуется так: прочитали запись, обработали, и так до конца чтения:
    Код (Text):
    while (reader.Read())
    {
    ...
    }
     
  6. Real-Mulik

    Real-Mulik Гость

    Спасибо, я уже все сделал. ;)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей