За последние 24 часа нас посетили 229450 программистов и 1731 робот. Сейчас ищут 2307 программистов ...

Ошибка в XML

Тема в разделе "Прочие вопросы по PHP", создана пользователем VaneS, 20 май 2015.

  1. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Здравствуйте, помогите решить проблему. Есть на сервере php скрипт который обходит все файлы в определенной директории и в результате строит дерево файлов с полными их путями относительно корня той директории. Далее формирует XML и записывает все данные туда. Вот пример XML:
    Код (PHP):
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <File_list>
    3.     <scan time="1432093201"></scan>
    4. <file>
    5.         
    6.         <name>/file1</name>
    7.         <time>1408595853</time>
    8.     </file>
    9.     <file>
    10.         
    11.         <name>/dir/file2</name>
    12.         <time>1423637278</time>
    13.     </file>
    14.     <file>
    15.         
    16.         <name>/dir/dir/file3</name>
    17.         <time>1408595854</time>
    18.     </file>
    19. </File_list>
    Но так как файлов очень много, примерно 17 000, соответственно и элементов file в XML очень много.
    Этот скрипт выполняется по крону,каждые мин 30.
    На другом сервере есть программа написанная на Java, которая запускается в планировщике задач.
    Она по http загружает ту XML, но при парсинге ее периодически возникает ошибка:
    Код (PHP):
    1. May 19, 2015 8:45:02 AM XmlLoader load
    2. SEVERE: null
    3. 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.
    4.         at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:228)
    5.         at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:277)
    6.         at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1141)
    7.         at XmlLoader.load(XmlLoader.java:41)
    8.         at Main.main(Main.java:40)
    9. 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.
    10.         at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
    11.         at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
    12.         at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
    13.         at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
    14.         at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
    15.         at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.endEntity(XMLDocumentFragmentScannerImpl.java:903)
    16.         at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:563)
    17.         at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1394)
    18.         at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1764)
    19.         at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipSpaces(XMLEntityScanner.java:1488)
    20.         at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.seekCloseOfStartTag(XMLDocumentFragmentScannerImpl.java:1379)
    21.         at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:247)
    22.         at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
    23.         at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    24.         at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
    25.         at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    26.         at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    27.         at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    28.         at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    29.         at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    30.         at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
    31.         at org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:217)
    32.         ... 4 more
    В чем может быть проблема? Почему php скрипт периодически записывает XML не верно?

    Добавлено спустя 1 минуту 11 секунд:
    Вот в принципе сама ошибка:
    Код (Text):
    1. XML document structures must start and end within the same entity.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    так ты в java программу добавь запись в лог текста xml файла и посмотри что там
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.132
    Симпатии:
    1.251
    Адрес:
    там-сям
    Не закрыт тег. Возможно пишущий скрипт неа*ся не закончив работу. Или в файл попало лишнее — текст варнинга какого-нибудь. Смотри
    - сам XML своими глазками, что с ним не так
    - логи PHP, там вероятно есть ответ сообщение об ошибке.
     
  4. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    А может ему памяти не хватает?