Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в XML / 10 сообщений из 10, страница 1 из 1
20.05.2015, 07:16
    #38963475
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
Здравствуйте, помогите решить проблему. Есть на сервере php скрипт который обходит все файлы в определенной директории и в результате строит дерево файлов с полными их путями относительно корня той директории. Далее формирует XML и записывает все данные туда. Вот пример XML:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8"?>
<File_list>
	<scan time="1432093201"></scan>
<file>
		<!--Ссылка на файл-->
		<name>/file1</name>
		<time>1408595853</time>
	</file>
	<file>
		<!--Ссылка на файл-->
		<name>/dir/file2</name>
		<time>1423637278</time>
	</file>
	<file>
		<!--Ссылка на файл-->
		<name>/dir/dir/file3</name>
		<time>1408595854</time>
	</file>
</File_list>


Но так как файлов очень много, примерно 17 000, соответственно и элементов file в XML очень много.
Этот скрипт выполняется по крону,каждые мин 30.
На другом сервере есть программа написанная на Java, которая запускается в планировщике задач.
Она по http загружает ту XML, но при парсинге ее периодически возникает ошибка:
Код: java
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.
28.
29.
30.
31.
32.
May 19, 2015 8:45:02 AM XmlLoader load
SEVERE: null
org.jdom2.input.JDOMParseException: Error on line 62872 of document http://80.132.65.28/damp/dataxml.xml: XML document structures must start and end within the same entity.
        at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:228)
        at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:277)
        at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1141)
        at XmlLoader.load(XmlLoader.java:41)
        at Main.main(Main.java:40)
Caused by: org.xml.sax.SAXParseException; systemId: http://80.132.65.28/damp/dataxml.xml; lineNumber: 62872; columnNumber: 6; XML document structures must start and end within the same entity.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.endEntity(XMLDocumentFragmentScannerImpl.java:903)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:563)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1394)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1764)
        at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipSpaces(XMLEntityScanner.java:1488)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.seekCloseOfStartTag(XMLDocumentFragmentScannerImpl.java:1379)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:247)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
        at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:217)
        ... 4 more


В чем может быть проблема?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
20.05.2015, 08:01
    #38963499
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
VaneS Ri_lax,

Ну наверное в размере файла :-)
По идее через DOM нельзя парсить xml больше 2Гб.
Попробуйте использовать SAX-парсер.
Он потоковый и не налагает особых ограничений на xml-файл.
...
Рейтинг: 0 / 0
20.05.2015, 08:53
    #38963537
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
http://80.132.65.28/damp/dataxml.xml: XML document structures must start and end within the same entity.
at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:228)


Либо недокачанный xml(неправильно скачанный) либо у файла xml неправильная структура или в данных есть не затенённые символы типа & < > и т.д
...
Рейтинг: 0 / 0
20.05.2015, 09:31
    #38963568
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
mad_nazgul,

Так файл весит 3мб всего)
...
Рейтинг: 0 / 0
20.05.2015, 10:26
    #38963662
morewind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
Я бы посмотрел на строку "Error on line 62872 of document" может там какие-то символы в имени файла которые нарушают структуру xml.
...
Рейтинг: 0 / 0
20.05.2015, 14:00
    #38964113
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
morewindЯ бы посмотрел на строку "Error on line 62872 of document" может там какие-то символы в имени файла которые нарушают структуру xml.

В смысле PHP не через DOM создает xml-фйал, а как просто текстовый.
Соответственно в строки не экранируются?
Вполне возможно.
От PHPников можно ждать все что угодно.
Вплоть до "гашения" исключения и записи стектрейса в xml-файл. :-)
...
Рейтинг: 0 / 0
20.05.2015, 14:33
    #38964178
morewind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
mad_nazgulmorewindЯ бы посмотрел на строку "Error on line 62872 of document" может там какие-то символы в имени файла которые нарушают структуру xml.

В смысле PHP не через DOM создает xml-фйал, а как просто текстовый.
Соответственно в строки не экранируются?
Вполне возможно.
От PHPников можно ждать все что угодно.
Вплоть до "гашения" исключения и записи стектрейса в xml-файл. :-)

На то что файл генерируется как просто текстовый указывает строка в начале файла
<scan time="1432093201"></scan>
в котором значение time записано в кавычках, в тоже время в значении ссылки на файл написано
<time>1408595853</time>
без кавычек. Думаю, что если бы использовался DOM то он бы записывал значения единообразно (или все в кавычках или все без кавычек). Ну и парсер не даром ругается на конкретную строку - там или неожиданный для него конец файла или нарушение структуры xml. Думаю, что автор глянув на эту строчку и сам догадается в источнике проблемы.
...
Рейтинг: 0 / 0
20.05.2015, 15:00
    #38964241
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
VaneS Ri_lax,

ставлю на недокачанный xml, либо xml с ошибкой
готовьте доказательную базу для разработчиков php :)

прежде чем парсить, сохраните xml в локальный файл, и при возникновении ошибки посмотрите на содержимое этого файла
...
Рейтинг: 0 / 0
21.05.2015, 08:06
    #38964771
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
Меня смущает то что ошибка возникает в случайное время, т.е. n-раз программа может отработать нормально, а потом на какой то раз выведет вот такую ошибку. За все это время содержание xml не меняется, просто файлы пересканируются и файл xml перезаписывается.
Отсюда можно сделать вывод что файл то записывается правильно, то нет. По этому я и думаю что дело в нехватке памяти у PHP.
...
Рейтинг: 0 / 0
21.05.2015, 09:09
    #38964826
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в XML
morewindНа то что файл генерируется как просто текстовый указывает строка в начале файла
<scan time="1432093201"></scan>
в котором значение time записано в кавычках, в тоже время в значении ссылки на файл написано
<time>1408595853</time>
в первом случае атрибут, во втором элемент :)

о рукотворчестве скорее говорит глубокомысленный комментарий
Код: xml
1.
<!--Ссылка на файл-->
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в XML / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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