powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема с InputStream as FileInputStream
9 сообщений из 9, страница 1 из 1
проблема с InputStream as FileInputStream
    #38423149
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Возникла проблемка:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public void execute(InputStream FXML){
            FFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
            FSchemaLocation = new StreamSource(new ByteArrayInputStream(FXSD.getBytes("UTF-8")));
            FSchema = FFactory.newSchema(FSchemaLocation);
            FValidator = FSchema.newValidator();
            FSource = new StreamSource(FXML);
            FValidator.validate(FSource);//Если эту строку закомментировать, то строка ниже ошибку не выдает.
//Вот здесь FXML уже почему-то close;

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dIn = db.parse(FXML); //вот тут ошибка Read error. Судя по всему потому что FXML уже close
}


Как грамотно поступить?
Фактически надо FXML 2 раза прочитать.
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423161
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стрим на то и стрим, что его нельзя два раза читать. Открывайте его второй раз.
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423164
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,

Я в java только еще учусь, но как его открыть второй раз. Он приходит в этот метод из стороннего приложения.
И мне надо его в этом методе прочитать 2 раза получается. Может есть способ клонировать его или на его основе создать 2 стрима.
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423169
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за FValidator?
Просто валидация это тот же парсинг. С тем же успехом можно валидацию сделать через DocumentBuilder.
http://docs.oracle.com/javase/tutorial/jaxp/dom/validating.html
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423176
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Попробую глянуть.

Я проверку XML по XSD делал по этой статье:
http://www.ibm.com/developerworks/ru/library/x-javaxmlvalidapi/
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423183
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА что за FValidator?

Это проверка XML документа соответсвию XSD схеме.
в DocumentBuilder не вижу как прикрутить XSD
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423191
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteЯ проверку XML по XSD делал по этой статье:
http://www.ibm.com/developerworks/ru/library/x-javaxmlvalidapi/
FValidator это ваш класс? Который внутри парсит ваш source?
А затем его нужно ещё раз парсить?
Мляя... это переменная... Ппц. Прочитайте Java Coding Convention, пожалуйста.
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423193
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citeв DocumentBuilder не вижу как прикрутить XSD
Я ссылку выше для кого привел.
...
Рейтинг: 0 / 0
проблема с InputStream as FileInputStream
    #38423377
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем я осознал что делал.
Я предполагал что сначала делаю валидацию, а потом делаю парсинг из стрима в дерево.
Но Валидацию из стрима сделать невозможно. В любом случае нужно дерево. Вот он 2 раза и создавал дерево.
Сейчас же я переделал следующим образом:
Делаю парсинг и результат парсинга отдаю на валидацию.
Код: java
1.
2.
3.
Document dIn = db.parse(FXML);
DOMSource FSource = new DOMSource(dIn);
FValidator.validate(FSource);




P.S. Способ по ссылке что вы указали, какой-то стремный, у меня начал выдавать сообщения что я ему некорректную xsd схему отдаю, хотя она же в моем способе работает на ура.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема с InputStream as FileInputStream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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