Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Большой файл XML. Ошибка - out of string space vba. / 22 сообщений из 22, страница 1 из 1
29.04.2019, 17:46
    #39807795
Большой файл XML. Ошибка - out of string space vba.
Привет всем. Пытаюсь получить данные из XML. Файл порядка 200Мб. Получаю данную ошибку: out of string space vba
Как её обойти? Что нужно исправить в моем коде?

Код: vbnet
1.
2.
3.
4.
5.
Dim i, sPat
i = FreeFile
Open FilePath For Input As i
sPat = Input(LOF(i), i)    '   <= ТУТ ОШИБКА
Close i
...
Рейтинг: 0 / 0
29.04.2019, 17:55
    #39807803
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
Зависит от "вам зачем его читать"?
...
Рейтинг: 0 / 0
29.04.2019, 18:05
    #39807814
Большой файл XML. Ошибка - out of string space vba.
aleks222,
Нужно удалить первые пару строк для дальнейшей работы.
Кроме того, хотел еще кое что подсчитать, но видимо сделаю это по другому.
...
Рейтинг: 0 / 0
29.04.2019, 18:14
    #39807824
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
такая есть функция построчного чтения
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 
Private Function readtxt(path1$) As String
On Error GoTo err1
Dim filenum, strTemp$, str$
 filenum = FreeFile
Open path1 For Input As #filenum
   Do While Not EOF(filenum)
        Line Input #filenum, strTemp
        str = str & strTemp
    Loop
Close #filenum
readtxt = str
exit_herhe:
Exit Function
err1:
readtxt = vbNullString
Resume exit_herhe
End Function


текущие задачи выполняет на больших объемах не тестил.
...
Рейтинг: 0 / 0
29.04.2019, 18:45
    #39807856
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
alecko,

авторLine Input #filenum, strTemp

эта строка может не сработать
--у XML очень часто одно длиннющая строка(в те же 200мб)
--и обычно UTF-8 кодировка
...
Рейтинг: 0 / 0
29.04.2019, 18:59
    #39807865
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
АрхимедоффПытаюсь получить данные из XMLМожет работать средствами для работы с XML?
...
Рейтинг: 0 / 0
29.04.2019, 21:18
    #39807961
Большой файл XML. Ошибка - out of string space vba.
Панург,
Ну я так и делаю по большому счету. А читать я хотел, для того чтобы построить прогресс бар. Для этого, хотел из файла получить количество определенных последовательных символов (kolzapiseivsego). Судя по всему от этого откажусь.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
' подсчитаем количество импортируемых записей
Open FilePath For Input As #i: sPat = Input(LOF(i), #i): Close #i
sPat = Split(sPat, "class=""RTVPD""")
kolzapiseivsego = CLng(UBound(sPat))
Debug.Print "Количество class RTVPD="; kolzapiseivsego
'--------------------------------------------------------------


m = m + 1
Result = SysCmd(acSysCmdInitMeter, "Обработано:  " & Int((m / kolzapiseivsego) * 100) & "%", kolzapiseivsego)
Result = SysCmd(acSysCmdUpdateMeter, m)
...
Рейтинг: 0 / 0
30.04.2019, 10:02
    #39808165
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
АрхимедоффПанург,
Ну я так и делаю по большому счету. А читать я хотел, для того чтобы построить прогресс бар. Для этого, хотел из файла получить количество определенных последовательных символов (kolzapiseivsego). Судя по всему от этого откажусь.Так и получай это количество из DOMDocument-а выбрав все ноды с таким атрибутом и взяв их кол-во

Код: vbnet
1.
kolzapiseivsego = objXML.selectNodes("//*[@class=""RTVPD""]").length
...
Рейтинг: 0 / 0
30.04.2019, 20:15
    #39808571
Большой файл XML. Ошибка - out of string space vba.
court,
Спасибо.
Еще подскажите, почему один и тот же файл большого объема то загружается, то нет.
Заметил, что программа как бы подвисает. Таймер показал, что приблизительно чуть более 180 секунд проходит и "Документ не загружен!". Закрыл программу, открыл и запустил. Выполнилось. Пока объяснений не вижу. :(
Код: vbnet
1.
2.
3.
4.
If Not xmlDoc.Load(FilePath) Then   
    MsgBox "Документ не загружен!"
    Exit Sub
End If
...
Рейтинг: 0 / 0
01.05.2019, 10:18
    #39808724
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
Архимедоффcourt,
Спасибо.
Еще подскажите, почему один и тот же файл большого объема то загружается, то нет.
Заметил, что программа как бы подвисает. Таймер показал, что приблизительно чуть более 180 секунд проходит и "Документ не загружен!". Закрыл программу, открыл и запустил. Выполнилось. Пока объяснений не вижу. :(
Код: vbnet
1.
2.
3.
4.
If Not xmlDoc.Load(FilePath) Then   
    MsgBox "Документ не загружен!"
    Exit Sub
End If


Нуу выведи ошибку, - почитаем :)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Dim xDoc As MSXML.DOMDocument    
Dim strErrText As String    
Dim xPE As MSXML.IXMLDOMParseError    

Set xDoc = New MSXML.DOMDocument 
If xDoc.Load("C:\My Documents\cds.xml") Then    
' The document loaded successfully.    
' Now do something intersting. 
Else    
' The document failed to load.    
' Obtain the ParseError object    
  Set xPE = xDoc.parseError    
  With xPE
    strErrText = "Your XML Document failed to load" & _
        "due the following error." & vbCrLf & _
        "Error #: " & .errorCode & ": " & xPE.reason & _
        "Line #: " & .Line & vbCrLf & _
        "Line Position: " & .linepos & vbCrLf & _
        "Position In File: " & .filepos & vbCrLf & _
        "Source Text: " & .srcText & vbCrLf & _
        "Document URL: " & .url
  End With

  MsgBox strErrText, vbExclamation 
End If

Set xPE = Nothing


имхую, что файл просто "заблокирован" твоими "приседаниями" с Open FilePath For Input
и система просто не даёт к нему доступ
...
Рейтинг: 0 / 0
01.05.2019, 14:37
    #39808836
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
Архимедоффaleks222,
Нужно удалить первые пару строк для дальнейшей работы.
Кроме того, хотел еще кое что подсчитать, но видимо сделаю это по другому.
Так читай "кусочками".
...
Рейтинг: 0 / 0
01.05.2019, 19:37
    #39808970
Большой файл XML. Ошибка - out of string space vba.
court,
Операции Open FilePath For Input я отключил.
...
Рейтинг: 0 / 0
01.05.2019, 19:41
    #39808972
Большой файл XML. Ошибка - out of string space vba.
aleks222,
Хорошо, можно пример кода? Как удалить в файле первые две строки?
...
Рейтинг: 0 / 0
01.05.2019, 20:10
    #39808976
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
aleks222Так читай "кусочками".
как читать кусочками, если в файле часто 1 строка, все 200мб( а то и 50гб)
--одной строкой
--разделитель подстрок имеет код=10 и line input не работает
--и в придачу кодировка ГЕА-8
...
Рейтинг: 0 / 0
01.05.2019, 20:11
    #39808978
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
опечатка

и в придачу кодировка utf-8
...
Рейтинг: 0 / 0
01.05.2019, 23:00
    #39809009
Большой файл XML. Ошибка - out of string space vba.
Вот на скрине начало файла. Пока не удалишь первые две строчки - санки на поедут. Приходится удалять вручную.
...
Рейтинг: 0 / 0
02.05.2019, 11:20
    #39809106
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
ПЕНСИОНЕРКАaleks222Так читай "кусочками".
как читать кусочками, если в файле часто 1 строка, все 200мб( а то и 50гб)
--одной строкой
--разделитель подстрок имеет код=10 и line input не работает
--и в придачу кодировка ГЕА-8

Вы меня пугаете своей дремучестью.

1. Открой как Binary
2. Читай по одному байту (можно и не по одному, но квалификация ТС не дозволяет).
3. Нема проблем.

ЗЫ. Не говоря уже о том, что ADODB.Stream
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/stream-object-ado?view=sql-server-2017
умеет и utf-8 читать/писать.
...
Рейтинг: 0 / 0
02.05.2019, 11:21
    #39809110
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
Архимедоффaleks222,
Хорошо, можно пример кода? Как удалить в файле первые две строки?
Не, дарагуля, учись сам.
...
Рейтинг: 0 / 0
02.05.2019, 11:32
    #39809122
Большой файл XML. Ошибка - out of string space vba.
aleks222,
Я Вам не дарагуля. Если бы знал, не обращался. Я и так достаточно много тут подчерпнул для себя, но благодаря не пустым словам, типа ваших, а конкретным примерам. И да, я не программист, просто пытаюсь по работе себе жизнь облегчить и всё.
...
Рейтинг: 0 / 0
02.05.2019, 11:38
    #39809129
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
Архимедоффcourt,
Операции Open FilePath For Input я отключил.


ок

Тогда можно разбирать файл "построчно", не загружая полностью в память.
В той же библиотеке MSXML2, есть объект SAXXMLReader (или SAXXMLReader60) который читает и парсит XML построчно.

тут есть хороший пример.
Тебе нужно будет переделать метод IVBSAXContentHandler_startElement - в нём нужно будет обрабатывать нужную тебе ноду.
...
Рейтинг: 0 / 0
02.05.2019, 11:44
    #39809136
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большой файл XML. Ошибка - out of string space vba.
АрхимедоффВот на скрине начало файла. Пока не удалишь первые две строчки - санки на поедут. Приходится удалять вручную.

По поводу 2-й строки, я понимаю почему ты её удаляешь (типа, нет этого файла "под рукой").
Но не обязательно удалять !
Можно "сказать" парсёру, что бы на это DTD "не обращал внимание", да и всё :)
Для Reader-а так:
Код: vbnet
1.
2.
Dim saxReader As MSXML2.SAXXMLReader60
saxReader.putFeature "prohibit-dtd", False


... и для DOMDocument тоже, имхо, есть что-то подобное

А первую строку зачем удаляешь ?
Кодировка файла не UTF-8 ?
...
Рейтинг: 0 / 0
02.05.2019, 19:23
    #39809326
Большой файл XML. Ошибка - out of string space vba.
court,
Спасибо большое, но для меня это уже темный лес :(
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Большой файл XML. Ошибка - out of string space vba. / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]