powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
6 сообщений из 6, страница 1 из 1
Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
    #37928727
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В БД хранится xml такой структуры:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<root>
<paragraph>
<punct1>111</punct1>
<punct2>222</punct2>
</paragraph>
<paragraph>
<punct1>111</punct1>
<punct2>222</punct2>
</paragraph>



Cчитываю его из базы в ByteArrayInputStream или StringBufferInputStream и затем полученный InputStream скармливаю парсеру:
Код: java
1.
2.
3.
4.
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("paragraph");
for (int i = 0; i < nodeList.getLength(); i++) {
   ......



При этом getElementsByTagName("paragraph") возвращает пустой NodeList.
Когда этот же xml сохраняю в файл и, соответственно, использую FileInputStream, то парсится правильно.
В чём дело? Я не те стримы использую?
...
Рейтинг: 0 / 0
Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
    #37928728
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в приведенном xml не хватает закрывающего root
...
Рейтинг: 0 / 0
Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
    #37928729
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не весь код запостил.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputStream in = new ByteArrayInputStream(xml.getBytes());
Document doc = builder.parse(in);

doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("paragraph");
for (int i = 0; i < nodeList.getLength(); i++) {
...
Рейтинг: 0 / 0
Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
    #37928730
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закрывающий root есть, я схематично изобразил структуру. xml в базе и в файле абсолютно одинаковый.
...
Рейтинг: 0 / 0
Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
    #37928809
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene,

Исправьте в коде:
Код: java
1.
2.
3.
4.
5.
6.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// InputStream in = new ByteArrayInputStream(xml.getBytes());
Document doc = builder.parse(new InputSource(new StringReader(xml));
doc.getDocumentElement().normalize();
...
...
Рейтинг: 0 / 0
Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
    #37929957
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmanXEugene,

Исправьте в коде:
Код: java
1.
2.
3.
4.
5.
6.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// InputStream in = new ByteArrayInputStream(xml.getBytes());
Document doc = builder.parse(new InputSource(new StringReader(xml));
doc.getDocumentElement().normalize();
...

Я взял на вооружение этот вариант, как более грамотный, поскольку нет смысла, без надобности, читать текст по байтам, а StringBufferInputStream deprecated.
Но проблема оказалось в другом - её не было)) В той таблице в разных записях был разный xml.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Неправильно парсится xml, прочитанный из БД. Тот же xml, сохранённый в файл, парсится.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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