Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / проблема с InputStream as FileInputStream / 9 сообщений из 9, страница 1 из 1
10.10.2013, 15:51:05
    #38423149
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с InputStream as FileInputStream
Добрый день.
Возникла проблемка:
Код: 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
10.10.2013, 15:55:23
    #38423161
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с InputStream as FileInputStream
Стрим на то и стрим, что его нельзя два раза читать. Открывайте его второй раз.
...
Рейтинг: 0 / 0
10.10.2013, 15:56:57
    #38423164
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с InputStream as FileInputStream
cdtyjv,

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

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

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

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




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


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