Показать сообщение отдельно
Старый 22.12.2020, 01:20   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,340 / 3558 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от rootx Посмотреть сообщение
Может какие то есть другие способы получить данные?
Добрый день! А читать через класс XmlReader не пробовали? Файл-то аккурат под этот класс сделан. Основное преимущество - не закачивается сразу весь файл и не валидируется XML в целом, т.е. быстрее должен пройти импорт и меньше кушать памяти.
В классе TaxSaxDocumentHandler_AU есть хороший пример
X++:
void parseFile(str filename)
{
    XmlReader reader;
    XmlNodeType nodeType;
    ;

    reader = XmlTextReader::newFile(filename);
    while (reader.read())
    {
        nodeType = reader.nodeType();
        switch(nodeType)
        {
            case XmlNodeType::Element:
                this.startElement(reader);
                break;

            case XmlNodeType::Text:
                this.characters(reader.value());
                break;
        }
    }
}
X++:
void startElement(XmlReader reader)
{
    str qName;
    ;

    qName = reader.name();

    if (qName == 'field')
    {
        fieldID = reader.getAttribute2('ID');
    }
    else if (qName != 'value')
    {
        fieldID = '';
    }

    tmpData = '';
}
Вот еще ссылка, как этот класс в C# отрабатывает
https://stackoverflow.com/questions/...der-in-c-sharp

И общие сведения о классе (официальная документация Microsoft): https://docs.microsoft.com/ru-ru/dot...tframework-4.8
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 22.12.2020 в 01:48.
За это сообщение автора поблагодарили: trud (3), Logger (3), Ace of Database (3), rootx (1).