Пример XML-файла
XML является для хранения структурированных данных. Ниже приведен пример Данные представлены в файле XML.
Каждый документ XML хорошо сформированной должен содержать версию стандарта XML используется и одного элемента документа. Элементом документа является корнем пункта. Все данные должны быть места под элементом документа.
XML замечания должны быть помещены в комментарии блоки следующим образом:
<!-- file: sample.xml --> <?xml version="1.0"?> <!-- our XML-document describes a purchase order --> <purchase-order> <date>2005-10-31</date> <number>12345</number> <purchased-by> <name>My name</name> <address>My address</address> </purchased-by> <!-- a collection element, contains a set of items --> <order-items> <item> <code>687</code> <type>CD</type> <label>Some music</label> </item> <item> <code>129851</code> <type>DVD</type> <label>Some video</label> </item> </order-items> </purchase-order>
Доступ к особенностям реализации Sax парсер
SAX является интерфейсом спецификацией W3C. Так, оно может иметь различные реализации, она определяет специфические черты и свойства.
SAX-интерфейс определяет доступ к осуществлению-специфические особенности. Кроме того, некоторые общие характеристики определены и обязательной, и таким образом, должен быть поддержан во всех парсеров SAX. Приведенном ниже примере показано, как получить особенностей supportes от XML-парсера:
|
Использование XML локатор для обозначения текущей парсер POS
Часто, когда SAX-парсер встречает плохо символом в исходном XML-документ, он доклады об этой ошибке. Для потребителя это будет больше знать строки и столбцов, где произошла ошибка. SAX композиций текущую позицию чтения в исходном XML с помощью локатора. SAX-обработчик может спасти локатора для следующих подробный вывод ошибок.
Приведенный ниже код показывает, как обращаться с локатором:
|
Включить Отключить проверку входных XML документов через Sax P
Проверка представляет собой процесс проверки исходного XML документа, чтобы соответствовать его DOCTYPE referes. Если документ соответствует его Doc-типа, то Calles действительными, в противном случае документ является недействительным. Для того, чтобы рассказать SAX, чтобы проверить документ на действия correspodning собственности SAX-парсер заводе должно быть установлено так, как следующим образом:
|
Использование XML атрибутов
Кроме коллекции каждого ребенка элементами XML-элемент может содержать любой набор атрибутов. Каждый атрибут пары имя-значение. XML атрибуты должны быть расположены внутри Открытие наценкой элемента, между элементами название и символ '>'. Использование атрибутов может привести к элементу быть пустыми, например, не имеет дети. XML-документ ниже использованием атрибутов.
<!-- file: sample.xml --> <?xml version="1.0"?>
Атрибута удобно, когда необходимо установить некоторые примитивные (не-сложной) значения.
<purchase-order date="2005-10-31" number="12345"> <purchased-by name="My name"> <!-- since address may be too complex for attribute value, we place it to a dedicated element --> <address>My address</address> </purchased-by> <order-items> <!-- here is an example of empty element i.e. containing no nested elements --> <item code="687" type="CD" label="Some music" /> <item code="129851" type="DVD" label="Some video"/> </order-items> </purchase-order>
Создание новых Sax парсер для разбора XML-документа
Поскольку SAX только интерфейс, с тем чтобы использовать это приложение должно определить ее осуществления. SAX парсер реализации в Java может быть установлена через систему собственности javax.xml.parsers.SAXParserFactory. Xerces Так как пакет был интегрирован с Java Runtime Envorinment, эта реализация используется по умолчанию. По этой причине, в общем случае нет необходимости указывать альтернативный парсера:
|
Образец Inline DTD определения
Есть два критерия для XML-документа: хорошо форму и силу. Хотя хорошо форму критериев отражает правильный синтаксис XML-только действия проверяет данные, описанные в XML.
Для того, чтобы проверить, где документ является действительным или нет он должен быть связан с Определение типа документа (DTD) или XML Schema.
Пример ниже показывает DTD для нашей выборки XML:
<!-- file: sample.xml --> <?xml version="1.0"?> <!DOCTYPE purchase-order [ <!-- declaration of the root element and its attributes --> <!ELEMENT purchase-order (purchased-by, order-items)> <!ATTLIST purchase-order date CDATA #REQUIRED number CDATA #REQUIRED > <!ELEMENT purchased-by (address)> <!ATTLIST purchased-by name CDATA #REQUIRED > <!ELEMENT address (#PCDATA)> <!-- order-items can contains at least on item --> <!ELEMENT order-items (item+)> <!ELEMENT item EMPTY> <!ATTLIST item code CDATA #REQUIRED type CDATA #REQUIRED label CDATA #REQUIRED > ]> <!-- In order to constrain the contents of XML-document a DTD-definition may be used. The DTD-definition can be inserted immediately into the caption of target XML-file. --> <purchase-order date="2005-10-31" number="12345"> <purchased-by name="My name"> <address>My address</address> </purchased-by> <order-items> <!-- here is an example of empty element i.e. containing no nested elements --> <item code="687" type="CD" label="Some music" /> <item code="129851" type="DVD" label="Some video"/> </order-items> </purchase-order>
Разбора XML с простыми обработчика документа Sax
Поскольку SAX является простым API для XML обеспечивает низкого уровня и высокой производительности интерфейс для обработки входящих XML-данных. SAX основан на XML-элемента модели обработчика. Загрузки программы XML должен определить свой собственный документ-обработчика и передать свой экземпляр парсера SAX.
Умолчанию обработчик имеет по крайней мере обратного вызова метода обработки запуска и остановки наценки в XML-элементов:
<!-- file: sample.xml --> <?xml version="1.0"?> <!-- XML files are used to store data as a tree of elements. Each XML-document can have only single root element. It wraps all the data. --> <purchase-order> <date>2005-10-31</date> <number>12345</number> <purchased-by> <name>My name</name> <address>My address</address> </purchased-by> <order-items> <item> <code>687</code> <type>CD</type> <label>Some music</label> </item> <item> <code>129851</code> <type>DVD</type> <label>Some video</label> </item> </order-items> </purchase-order>
|
Образец связан DTD определения
В большинстве случаев DTD определения распределяется между многочисленными XML-документы, которые он описывает. В такой ситуации это будет более удобно разместить такое DTD в посвящает документ доступен на данный URL (Calles Система-ID) или название (государственно-ID). Таким образом, все документы XML при помощи типов, определенных в этом DTD-файл будет просто сослаться его, как это показано в образце ниже:
<!-- file: purchase-order.dtd --> <!-- declaration of the root element and its attributes --> <!ELEMENT purchase-order (purchased-by, order-items)> <!ATTLIST purchase-order date CDATA #REQUIRED number CDATA #REQUIRED > <!ELEMENT purchased-by (address)> <!ATTLIST purchased-by name CDATA #REQUIRED > <!ELEMENT address (#PCDATA)> <!-- order-items can contains at least on item --> <!ELEMENT order-items (item+)> <!ELEMENT item EMPTY> <!ATTLIST item code CDATA #REQUIRED type CDATA #REQUIRED label CDATA #REQUIRED > <!-- file: sample.xml --> <?xml version="1.0"?> <!-- Sample of linked DTD definition --> <!DOCTYPE purchase-order SYSTEM "purchase-order.dtd"> <!-- In order to constrain the contents of XML-document a DTD-definition may be refered in DOCTYPE instruction. --> <purchase-order date="2005-10-31" number="12345"> <purchased-by name="My name"> <address>My address</address> </purchased-by> <order-items> <!-- here is an example of empty element i.e. containing no nested elements --> <item code="687" type="CD" label="Some music" /> <item code="129851" type="DVD" label="Some video"/> </order-items> </purchase-order>
Настройка Sax парсер завода для производства альтернативных P
Если JRE внедрения используется для запуска приложения вы не содержит встроенный анализатор реализация SAX (или не нравится), вы можете настроить его с помощью системных свойств.
Когда SAXParserFactory предлагается создание новых экземпляров, он ищет системные свойства для вступления с именем javax.xml.parsers.SAXParserFactory. Это свойство должно содержать имя класса implemeneting SAX интерфейс.
Приведенный ниже пример показывает, как заставить Apache реализации SAX:
|