Подтвердить что ты не робот

В чем разница между localname и qname?

При использовании SAX для синтаксического анализа XML файла на Java в чем разница между параметрами localname и qname в SAX-методах, таких как startElement(String uri, String localName,String qName, Attributes attributes)?

4b9b3361

Ответ 1

Квалифицированное имя включает как префикс пространства имен, так и локальное имя: att1 и foo:att2.

Пример XML

<root 
    xmlns="http://www.example.com/DEFAULT" 
    att1="Hello" 
    xmlns:foo="http://www.example.com/FOO" 
    foo:att2="World"/>

Код Java:

att1

Атрибуты без префикса пространства имен не выбирают пространство имен по умолчанию. Это означает, что пространство имен для элемента root "http://www.example.com/DEFAULT", пространство имен для атрибута att1 равно "".

int att1Index = attributes.getIndex("", "att1");
attributes.getLocalName(att1Index);  // returns "att1"
attributes.getQName(att1Index);  // returns "att1"
attributes.getURI(att1Index);  // returns ""

ATT2

int att2Index = attributes.getIndex("http://www.example.com/FOO", "att2");
attributes.getLocalName(att2Index);  // returns "att2"
attributes.getQName(att2Index);  // returns "foo:att2"
attributes.getURI(att2Index);  // returns "http://www.example.com/FOO"

Ответ 2

Вообще говоря, localname - это локальное имя, что означает внутри пространства имен. qname или квалифицированное имя - полное имя (включая пространство имен). Например, < a: b... > будет иметь локальное имя b, но qname a: b.

Это, однако, очень общее и зависит от настроек. Взгляните на пример в конце этой страницы для более подробного примера: пример

Ответ 3

По умолчанию читатель XML будет сообщать URI пространства имен и localName для каждого элемента, принадлежащего пространству имен, как в начале, так и в конце обработчика.

Рассмотрим следующий пример:

  <html:hr xmlns:html="http://www.w3.org/1999/xhtml"/>

С обработкой пространства имен SAX2 по умолчанию читатель XML будет сообщать о событии начального и конечного элементов с URI пространства имен http://www.w3.org/1999/xhtml и localName ч. Большинство реализаций XMLReader также сообщают исходное имя qName html: hr, но этот параметр может быть просто пустой строкой (за исключением элементов, которые не находятся в пространстве имен).

http://www.saxproject.org/namespaces.html