public class NamespaceSupport extends Object
Этот модуль, и исходный код и документация, находится в Общедоступном Домене, и прибывает без ГАРАНТИИ. См. для дополнительной информации.
Этот class инкапсулирует логику обработки Пространства имен: это отслеживает объявления в настоящий момент в силе для каждого контекста и автоматически обрабатывает квалифицированные имена XML в их части Пространства имен; это может также использоваться наоборот для того, чтобы генерировать XML qnames от Пространств имен.
Объекты поддержки пространства имен являются допускающими повторное использование, но метод сброса должен быть вызван между каждым сеансом.
Вот простой сеанс:
String parts[] = new String[3];
NamespaceSupport support = new NamespaceSupport();
support.pushContext();
support.declarePrefix("", "http://www.w3.org/1999/xhtml");
support.declarePrefix("dc", "http://www.purl.org/dc#");
parts = support.processName("p", parts, false);
System.out.println("Namespace URI: " + parts[0]);
System.out.println("Local name: " + parts[1]);
System.out.println("Raw name: " + parts[2]);
parts = support.processName("dc:title", parts, false);
System.out.println("Namespace URI: " + parts[0]);
System.out.println("Local name: " + parts[1]);
System.out.println("Raw name: " + parts[2]);
support.popContext();
Отметьте, что этот class оптимизируется для варианта использования, где большинство элементов не содержит Объявления пространства имен: если то же самое отображение префикса/URI будет повторено для каждого контекста (например), то этот class будет несколько менее эффективным.
Хотя драйверы SAX (синтаксические анализаторы) могут хотеть использовать этот class, чтобы реализовать обработку пространства имен, они не обязаны делать так. Приложения должны отследить информацию о пространстве имен самостоятельно, если они хотят использовать информацию о пространстве имен.
| Модификатор и Тип | Поле и Описание |
|---|---|
static String |
NSDECL
URI объявления пространства имен как константа.
|
static String |
XMLNS
XML URI Пространства имен как константа.
|
| Конструктор и Описание |
|---|
NamespaceSupport()
Создайте новый объект поддержки Пространства имен.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
boolean |
declarePrefix(String prefix, String uri)
Объявите префикс Пространства имен.
|
Перечисление |
getDeclaredPrefixes()
Возвратите перечисление всех префиксов, объявленных в этом контексте.
|
Строка |
getPrefix(String uri)
Возвратите один из префиксов, отображенных на URI Пространства имен.
|
Перечисление |
getPrefixes()
Возвратите перечисление всех префиксов, объявления которых являются активными в текущем контексте.
|
Перечисление |
getPrefixes(String uri)
Возвратите перечисление всех префиксов для данного URI, объявления которого являются активными в текущем контексте.
|
Строка |
getURI(String prefix)
Ищите префикс и получите отображенный в настоящий момент URI Пространства имен.
|
boolean |
isNamespaceDeclUris()
Возвращает true, если атрибуты объявления пространства имен помещаются в пространство имен.
|
void |
popContext()
Вернитесь к предыдущему контексту Пространства имен.
|
Строка[] |
processName(String qName, String[] parts, boolean isAttribute)
Обработайте необработанное полностью определенное имя XML, после того, как все объявления в текущем контексте были обработаны
declarePrefix(). |
void |
pushContext()
Запустите новый контекст Пространства имен.
|
void |
reset()
Сбросьте этот объект поддержки Пространства имен для повторного использования.
|
void |
setNamespaceDeclUris(boolean value)
Средства управления, помещаются ли атрибуты объявления пространства имен в
NSDECL пространство имен processName(). |
public static final String XMLNS
http://www.w3.org/XML/1998/namespace как определено в "Пространствах имен в XML" * рекомендация. Это - URI Пространства имен, который автоматически отображается на префикс "xml".
public static final String NSDECL
http://www.w3.org/xmlns/2000/, как определено в назад несовместимой опечатке к "Пространствам имен в XML" рекомендация. Поскольку та опечатка датированный более поздним числом SAX2, значения по умолчанию SAX2 к исходной рекомендации, и обычно не использует этот URI. Это - URI Пространства имен, которому дополнительно применяются к xmlns и атрибуты xmlns:*, которые используются, чтобы объявить пространства имен.
setNamespaceDeclUris(boolean), isNamespaceDeclUris(), Постоянные Значения полейpublic NamespaceSupport()
public void reset()
Необходимо вызвать этот метод прежде, чем снова использовать объект поддержки Пространства имен для нового сеанса. Если URI объявления пространства имен должны поддерживаться, тот флаг должен также быть установлен в значение не по умолчанию.
setNamespaceDeclUris(boolean)public void pushContext()
Код обратного вызова события должен запустить новый контекст однажды на элемент. Это означает быть готово вызвать это в любом из двух мест. Для элементов, которые не включают объявления пространства имен, ContentHandler.startElement () обратный вызов является правильным местом. Для элементов с таким объявлением это сделало в первом ContentHandler.startPrefixMapping () обратный вызов. Булев флаг может использоваться, чтобы отследить, был ли контекст начат все же. Когда любой из тех методов вызывают, он проверяет флаг, чтобы видеть, должен ли новый контекст быть начат. Если так, это запускает контекст и устанавливает флаг. После того, как ContentHandler.startElement () делает это, он всегда очищает флаг.
Обычно, драйверы SAX продвинули бы новый контекст в начале каждого элемента XML. Затем они выполняют первое, передают по атрибутам, чтобы обработать все объявления пространства имен, делая ContentHandler.startPrefixMapping () обратные вызовы. Затем вторая передача делается, чтобы определить полностью определенные имена пространства имен для всех атрибутов и для имени элемента. Наконец вся информация для ContentHandler.startElement () обратный вызов доступен, таким образом, это может тогда быть сделано.
Объект поддержки Пространства имен всегда запускается с основного контекста уже в силе: в этом контексте только объявляется префикс "xml".
ContentHandler, popContext()public void popContext()
Обычно, следует вытолкать контекст в конце каждого элемента XML. После выталкивания контекста все Пространство имен снабжает префиксом отображения, которые были ранее в силе, восстанавливаются.
Не следует попытаться объявить дополнительные префиксы Пространства имен после выталкивания контекста, если Вы не продвигаете другой контекст сначала.
pushContext()public boolean declarePrefix(String prefix, String uri)
processName() интерпретировать префиксы против (потенциально пересмотренный) префиксы. Этот метод объявляет префикс в текущем контексте Пространства имен; префикс останется в силе, пока этот контекст не выталкивается, если это не затенено в порожденном контексте.
Чтобы объявить Пространство имен элемента значения по умолчанию, используйте пустую строку в качестве префикса.
Отметьте, что есть асимметрия в этой библиотеке: getPrefix не будет возвращать "" префикс, даже если Вы объявили пространство имен элемента значения по умолчанию. Чтобы проверить на пространство имен по умолчанию, необходимо искать это явно использование getURI. Эта асимметрия существует, чтобы облегчить искать префиксы для названий атрибута, где префикс значения по умолчанию не позволяется.
prefix - Префикс, чтобы объявить, или пустая строка, чтобы указать на пространство имен элемента значения по умолчанию. У этого никогда, возможно, нет значения "xml" или "xmlns".uri - URI Пространства имен, чтобы связаться с префиксом.processName(java.lang.String, java.lang.String[], boolean), getURI(java.lang.String), getPrefix(java.lang.String)public String[] processName(String qName, String[] parts, boolean isAttribute)
declarePrefix(). Этот метод обрабатывает необработанное полностью определенное имя XML в текущем контексте, удаляя префикс и ища это среди префиксов, в настоящий момент объявленных. Возвращаемое значение будет массивом, предоставленным вызывающей стороной, заполненной следующим образом:
Все строки в массиве будут усвоены. Если у необработанного имени будет префикс, который не был объявлен, то возвращаемое значение будет нулем.
Отметьте, что названия атрибута обрабатываются по-другому чем имена элементов: неснабженное префиксом имя элемента получит пространство имен по умолчанию (если любой), в то время как неснабженное префиксом название атрибута не будет.
qName - Полностью определенное имя XML, которое будет обработано.parts - Массив, предоставленный вызывающей стороной, способной к содержанию по крайней мере трех элементов.isAttribute - Флаг, указывающий, является ли это названием атрибута (истина) или имя элемента (ложь).declarePrefix(java.lang.String, java.lang.String), String.intern()public String getURI(String prefix)
Этот метод ищет префикс в текущем контексте. Используйте пустую строку ("") для пространства имен по умолчанию.
prefix - Префикс, чтобы искать.getPrefix(java.lang.String), getPrefixes()public Enumeration getPrefixes()
Отметьте: если будет префикс значения по умолчанию, то он не будет возвращен в этом перечислении; проверьте на префикс значения по умолчанию использование getURI с параметром "".
getDeclaredPrefixes(), getURI(java.lang.String)public String getPrefix(String uri)
Если больше чем один префикс будет в настоящий момент отображен на тот же самый URI, то этот метод сделает произвольный выбор; если Вы хотите все префиксы, используйте getPrefixes() метод вместо этого.
Отметьте: это никогда не будет возвращать пустое (значение по умолчанию) префикс; чтобы проверить на префикс значения по умолчанию, используйте getURI метод с параметром "".
uri - URI пространства именgetPrefixes(java.lang.String), getURI(java.lang.String)public Enumeration getPrefixes(String uri)
Этот метод возвращает префиксы, отображенные на определенный URI Пространства имен. xml: префикс будет включен. Если Вы хотите только один префикс, это отображается на URI Пространства имен, и Вы не заботитесь, какой Вы получаете, используйте getPrefix метод вместо этого.
Отметьте: пустое (значение по умолчанию) префикс никогда не включается в это перечисление; чтобы проверить на присутствие пространства имен по умолчанию, используйте getURI метод с параметром "".
uri - URI Пространства имен.getPrefix(java.lang.String), getDeclaredPrefixes(), getURI(java.lang.String)public Enumeration getDeclaredPrefixes()
Пустое (значение по умолчанию) префикс будет включено в это перечисление; отметьте, что это поведение отличается от того из getPrefix(java.lang.String) и getPrefixes().
getPrefixes(), getURI(java.lang.String)public void setNamespaceDeclUris(boolean value)
NSDECL пространство имен processName(). Это может только быть изменено прежде, чем любые контексты были продвинуты.IllegalStateException - пытаясь установить это после того, как любой контекст был продвинут.public boolean isNamespaceDeclUris()
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92