powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / xml scheme
8 сообщений из 8, страница 1 из 1
xml scheme
    #38696620
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

При разборе xml для которого задана xml scheme я начал писать класс:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class XmlClass {

    public XmlClass(File file){
        try{
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setValidating(true);

            if (file.toString().contains("schema")){
                factory.setNamespaceAware(true);
                final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
                final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
                factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
            }
            factory.setIgnoringElementContentWhitespace(true);
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(file);
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
}



здесь констуктору я передаю файл с xml scheme

Подскажите, пожалуйста,

1. Как дальше использовать эту схему для дальнейшего парсинга файла с данными? Не очень понимаю что дальше писать...
2. И ещё, в файле xml с данными нужно явно прописывать строку со схемой:

Код: xml
1.
2.
3.
4.
5.
<?xml version="1.0"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLScheme-instance" 
    xsi:noNamespaceSchemeLocation="config.xsd">
...
</configuration>



Спасибо.
...
Рейтинг: 0 / 0
xml scheme
    #38696624
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtusздесь констуктору я передаю файл с xml scheme
1. Как дальше использовать эту схему для дальнейшего парсинга файла с данными? Не очень понимаю что дальше писать...

Схемы не используются для "дальнейшего парсинга". Они используются для валидации.
Не очень понял задумку. Парсить вы хотите другой файл. Но запускаете метод .parse() почему-то для файла-схемы. Почему?

mr_virtus2. И ещё, в файле xml с данными нужно явно прописывать строку со схемой:

Да. Только не "строку", а URI схемы.
...
Рейтинг: 0 / 0
xml scheme
    #38696634
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо.

Правильно я понимаю,
1. что путь к файлу схемы нужно прописывать в каждом файле с данными xml в виде URI схемы?

2. Файл схемы должен быть сохранен с .xsd расширением?

3. После п.1. п.2 я уже могу парсить xml создав:

Код: java
1.
2.
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(file);



куда в качестве file, передав файл с данными xml?
...
Рейтинг: 0 / 0
xml scheme
    #38696639
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, кстати, и вот так:
http://www.rsdn.ru/forum/java/4179794
...
Рейтинг: 0 / 0
xml scheme
    #38696641
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtus1. что путь к файлу схемы нужно прописывать в каждом файле с данными xml в виде URI схемы?

Да. Очень желательно.

mr_virtus2. Файл схемы должен быть сохранен с .xsd расширением?

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

mr_virtus3. После п.1. п.2 я уже могу парсить xml создав:

Парсить можно и без схемы. А вот валидация по схеме, может быть выключена по-умолчанию
...
Рейтинг: 0 / 0
xml scheme
    #38696643
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, ок, спасибо большое!
...
Рейтинг: 0 / 0
xml scheme
    #38696654
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо

а правильно я понимаю, что файл схемы устанавливается как:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 
URL resourceUrl = getClass().getResource(schemaClassPath);
          URL resourceUrl = getClass().getResource(schemaClassPath);
            if (resourceUrl != null)
            {
                try
                {
                    Schema schema = factory.newSchema(resourceUrl);
                    // store schemas in list
                }
                catch (SAXException e)
                {
                    Logger.getLogger(getClass()).error(
                            MessageFormat.format(Messages.getString("JDFConverter.validation.schema.create.error"), schemaClassPath), e);
                }
            }



я к тому что, как у меня было написано, может имелось в виду, что файл с данными .xml содержит в себе схему сразу(такое же возможно, насколько я понимаю)?
и если файл её содержит, то устанавливаем валидацию?
(пример из книжки, а пояснения нет)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
if (file.toString().contains("schema")){
                factory.setNamespaceAware(true);
                final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
                final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
                factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
            }
            factory.setIgnoringElementContentWhitespace(true);
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(file);
...
Рейтинг: 0 / 0
xml scheme
    #38696664
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ещё

тут идет обработка SAXException


Код: java
1.
2.
3.
4.
5.
 catch (SAXException e)
                {
                    Logger.getLogger(getClass()).error(
                            MessageFormat.format(Messages.getString("JDFConverter.validation.schema.create.error"), schemaClassPath), e);
                }



Хотя sax анализатор не создается. Почему так? Мне нужно реализовать через DOM
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / xml scheme
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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