Как решить docbuilder SAX исключение: неожиданный конец документа? - PullRequest
0 голосов
/ 15 марта 2010

У меня есть служба, предоставляющая информацию об автомобиле в формате xml.

<?xml version="1.0" encoding='UTF-8'?>
<cars>
   <car>
      <id>5</id>
      <name>qwer</name>
   </car>
   <car>
      <id>6</id>
      <name>qwert</name>
   </car>
</cars>

Теперь проблема в том, что мой

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xml);

Иногда выдает SAXException (иногда оно работает просто отлично, но когда я перезагружаю сервер (все еще в разработке), я иногда продолжаю его получать) с причиной SAXException: неожиданный конец документа.

Но когда я размещаю там буферный ридер, чтобы посмотреть, что он получает, я копирую значение в XML-документ и открываю его в Firefox / т.е. он выглядит просто отлично.

Ответы [ 2 ]

2 голосов
/ 15 марта 2010

XML-документ должен иметь один и только один корневой элемент.

У вас должен быть элемент <cars> (или аналогичный), охватывающий вашу группу <car> с.

Сообщение об ошибке не имеет смысла, поскольку у вас неожиданный контент после того, что должно быть в конце документа.

1 голос
/ 15 марта 2010

Вы получаете это исключение, потому что введенный вами пример является допустимым фрагментом XML (как следствие, читаемым Firefox), но недопустимым документом XML, так как имеет более одного корневого узла, что запрещено правилами XML. Попробуйте создать один XML-документ для каждого тега <car>, и SAX подойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...