Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Валидация XML по XSD / 4 сообщений из 4, страница 1 из 1
21.10.2015, 17:34
    #39082733
Андрей Васильевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML по XSD
Такая проблема: xsd-файл и есть огромное(несколько ГБ сжатых и не очень) множество xml и я их загоняю в базу. Но не все секции, а только часть. Провожу валидацию таким образом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    public static boolean validateXml(File xml, File xsd) {
    try {
        SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
                .newSchema(new StreamSource(xsd))
                .newValidator()
                .validate(new StreamSource(xml));
    } catch (Exception e) {
        return false;
    }
    return true;
    }


Но вот проблема, есть тэги которые мне не нужно проверять на валидность, а их структуру я не знаю и там может быть что угодно. Можно ли в схеме указать места где может быть что угодно?
...
Рейтинг: 0 / 0
21.10.2015, 17:36
    #39082738
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML по XSD
Андрей ВасильевичМожно ли в схеме указать места где может быть что угодно?
http://www.w3schools.com/schema/el_any.asp
http://www.w3schools.com/schema/schema_complex_any.asp
...
Рейтинг: 0 / 0
22.10.2015, 11:48
    #39083252
Андрей Васильевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML по XSD
Blazkowicz,

Спасибо большое за ссылки! Честно говоря, до вчерашнего дня даже не думал что такое возможно. any не совсем получается. На примере ниже я конструкцией xs:any пропускаю <КоличествоЛьготныхСоставляющих> но как пропустить всю(с содержимым) секцию <ЛьготныйСтаж> ?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<СтажевыйПериод>
<НомерСтроки>1</НомерСтроки>
<ДатаНачалаПериода>01.10.2014</ДатаНачалаПериода>
<ДатаКонцаПериода>17.11.2014</ДатаКонцаПериода>
<КоличествоЛьготныхСоставляющих>1</КоличествоЛьготныхСоставляющих>
<ЛьготныйСтаж>
	<НомерСтроки>1</НомерСтроки>
	<ОсобенностиУчета>
		<ДекретДети>ДЛДЕТИ</ДекретДети>
	</ОсобенностиУчета>
</ЛьготныйСтаж>
</СтажевыйПериод>



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<СтажевыйПериод>
<НомерСтроки>1</НомерСтроки>
<ДатаНачалаПериода>01.10.2014</ДатаНачалаПериода>
<ДатаКонцаПериода>17.11.2014</ДатаКонцаПериода>
<КоличествоЛьготныхСоставляющих>1</КоличествоЛьготныхСоставляющих>
<ЛьготныйСтаж>
	<НомерСтроки>1</НомерСтроки>
	<ОсобенностиУчета>
		<ДекретДети>ДЛДЕТИ</ДекретДети>
	</ОсобенностиУчета>
</ЛьготныйСтаж>
</СтажевыйПериод>
...
Рейтинг: 0 / 0
22.10.2015, 11:50
    #39083255
Андрей Васильевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация XML по XSD
Ошибся там:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<xs:element name="СтажевыйПериод">
  <xs:complexType>
	<xs:sequence>
	  <xs:element type="xs:short" name="НомерСтроки"/>
	  <xs:element type="xs:string" name="ДатаНачалаПериода"/>
	  <xs:element type="xs:string" name="ДатаКонцаПериода"/>
	  <xs:any namespace="##any" minOccurs="0" processContents="lax"/>
	</xs:sequence>
  </xs:complexType>
</xs:element>


и
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<СтажевыйПериод>
<НомерСтроки>1</НомерСтроки>
<ДатаНачалаПериода>01.10.2014</ДатаНачалаПериода>
<ДатаКонцаПериода>17.11.2014</ДатаКонцаПериода>
<КоличествоЛьготныхСоставляющих>1</КоличествоЛьготныхСоставляющих>
<ЛьготныйСтаж>
	<НомерСтроки>1</НомерСтроки>
	<ОсобенностиУчета>
		<ДекретДети>ДЛДЕТИ</ДекретДети>
	</ОсобенностиУчета>
</ЛьготныйСтаж>
</СтажевыйПериод>
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Валидация XML по XSD / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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