XSD: пространство имен теперь работает http://schemas.microsoft.com/2003/10/Serialization/Arrays [duplicate]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

111
задан Oded 3 May 2011 в 21:04
поделиться

4 ответа

Парсер Java XML, который использует Spring, прочитает значения schemaLocation и попытается загрузить их из Интернета, чтобы проверить файл XML. Spring, в свою очередь, перехватывает эти запросы нагрузки и обслуживает версии из своих собственных файлов JAR.

Если вы опустите schemaLocation, тогда синтаксический анализатор XML не будет знать, где получить схему в порядке для проверки конфигурации.

73
ответ дан rogerdpack 28 August 2018 в 04:35
поделиться

Согласно спецификации для определения Схемы

может быть или не быть схема, доступная через имя пространства имен ... Пользовательское сообщество и / или потребитель / соглашения поставщика могут устанавливать обстоятельства, при которых [попытка извлечь xsd из URL-адреса пространства имен] является разумной стратегией по умолчанию

(спасибо за то, что вы недвусмыслен, spec!) [/ ​​g5]

и

в случае, если автор документа (человек или нет) создал документ с определенной схемой, и гарантирует, что какой-либо или весь документ соответствует этой схеме, schemaLocation и noNamespaceSchemaLocation [ атрибуты].

Таким образом, в основном с указанием только пространства имен ваш XML «может» быть попытан для проверки на xsd в этом месте (даже если ему не хватает атрибута schemaLocation ), в зависимости от вашего «сообщества». Если вы укажете конкретный schemaLocation, то в основном это означает, что документ xml «должен» соответствовать указанному xsd, поэтому «пожалуйста, подтвердите его» (как я его прочитал). Я предполагаю, что если вы не выполняете атрибут schemaLocation или noNamespaceSchemaLocation, он просто «не проверяется» большую часть времени (на основе других ответов появляется java делает это таким образом).

Еще одна морщина заключается в том, что обычно с проверкой xsd в java-библиотеках [ex: spring config xml files], если ваши XML-файлы указывают конкретный URL-адрес schemaLocation xsd в XML-файле, например xsi:schemaLocation="http://somewhere http://somewhere/something.xsd", как правило, в одном из в вашей секции зависимости будет содержаться копия этого xsd-файла в разделе ресурсов, а весна имеет функцию «сопоставления», говорящую, что она обрабатывает этот файл xsd, как если бы он сопоставлялся с URL http://somewhere/something.xsd ( поэтому вы никогда не попадаете в сеть и не загружаете файл, он просто существует локально). См. Также https://stackoverflow.com/a/41225329/32453 для получения дополнительной информации.

16
ответ дан Community 28 August 2018 в 04:35
поделиться

Если вы войдете в любое из этих мест, вы найдете то, что определено в этой схеме. Например, он сообщает вам, каков тип данных значения ключевых слов ini-метода.

0
ответ дан Mojun Zhu 28 August 2018 в 04:35
поделиться

xmlns является уникальным идентификатором внутри документа - он не должен быть URI для схемы:

пространства имен XML предоставляют простой метод для определения имен элементов и атрибутов, используемых в документах расширяемого языка разметки, путем связывания их с пространствами имен, идентифицированными ссылками URI.

xsi:schemaLocation должен давать подсказку относительно фактического расположения схемы:

может использоваться в документе, чтобы давать подсказки относительно физического расположения документов схемы, которые могут использоваться для оценки.

65
ответ дан Oded 28 August 2018 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: