Парсинг XML-файла без корня в Java

У меня есть этот XML-файл, который не имеет корневого узла. Кроме ручного добавления "поддельного" корневого элемента, там какой-либо способ, которым я смог бы проанализировать XML-файл в Java?Спасибо.

5
задан Narayan 7 July 2010 в 04:28
поделиться

4 ответа

Я полагаю, вы могли бы создать новую реализацию InputStream, которая обертывает ту, из которой вы будете анализировать. Эта реализация вернет байты открывающего корневого тега перед байтами из обернутого потока и байты закрывающего корневого тега впоследствии. Это было бы довольно просто сделать.

Я тоже могу столкнуться с этой проблемой. Устаревший код, а?

Ян.

Изменить: вы также можете посмотреть java.io.SequenceInputStream, который позволяет вам добавлять потоки друг к другу. Вам нужно будет поместить свой префикс и суффикс в байтовые массивы и обернуть их в ByteArrayInputStreams, но все это довольно просто.

5
ответ дан 18 December 2019 в 14:41
поделиться

Ваш XML-документ требует, чтобы корневой элемент xml считался правильно сформированным . Без этого вы не сможете проанализировать его с помощью парсера xml.

4
ответ дан 18 December 2019 в 14:41
поделиться

Один из способов - предоставить собственную фиктивную обертку, не трогая исходный 'xml' (не очень хорошо сформированный 'xml') Нужны слова для этого:

Синтаксис

<!DOCTYPE some_root_elem SYSTEM "/home/ego/some.dtd"
[
  <!ENTITY entity-name "Some value to be inserted at the entity">
]

Пример:

<!DOCTYPE dummy [
<!ENTITY data SYSTEM "http://wherever-my-data-is">
]>
<dummy>
&data;
</dummy>
3
ответ дан 18 December 2019 в 14:41
поделиться

Я думаю, что даже если какой-либо API будет иметь опцию для этого, он вернет вам только первый узел "XML", который будет выглядеть как корень, и отбросит остальные.

Так что ответ, вероятно, заключается в том, чтобы сделать это самому. Scanner или StringTokenizer могут справиться с этой задачей.

Возможно, некоторые html парсеры могут помочь, они обычно менее строгие.

0
ответ дан 18 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: