33 Stimmen

Was ist der Unterschied zwischen localname und qname?

Was ist der Unterschied zwischen den Parametern, wenn SAX zum Parsen einer XML-Datei in Java verwendet wird? lokaler Name y qname in SAX-Methoden wie startElement(String uri, String localName,String qName, Attributes attributes) ?

45voto

bdoughan Punkte 144925

Der qualifizierte Name enthält sowohl das Namespace-Präfix als auch den lokalen Namen: att1 y foo:att2 .

Beispiel-XML

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

Java-Code:

att1

Attribute ohne Namespace-Präfix nehmen den Standard-Namespace nicht auf. Das bedeutet, dass der Namespace für das Attribut root Element ist "http://www.example.com/DEFAULT" der Namespace für die att1 Attribut ist "" .

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"

13voto

Im Allgemeinen ist localname der lokale Name, d.h. innerhalb des Namespace. qname, oder qualifizierter Name, ist der vollständige Name (einschließlich Namespace). Zum Beispiel hat <a:b > einen lokalen Namen b, aber einen qname a:b.

Dies ist jedoch sehr allgemein und hängt von den Einstellungen ab. Schauen Sie sich das Beispiel am Ende dieser Seite an, um ein ausführlicheres Beispiel zu sehen: Beispiel

0voto

Nageswara Rao Punkte 916

Standardmäßig meldet ein XML-Reader einen Namespace-URI und einen localName für jedes Element, das zu einem Namespace gehört, sowohl im Start- als auch im End-Handler.

Betrachten Sie das folgende Beispiel:

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

Bei der standardmäßigen SAX2-Namespace-Verarbeitung würde der XML-Reader ein Start- und Endelement-Ereignis mit dem Namespace-URI melden http://www.w3.org/1999/xhtml und den lokalen Namen hr. Die meisten XMLReader-Implementierungen melden auch den ursprünglichen qName html:hr, aber dieser Parameter kann einfach eine leere Zeichenkette sein (außer bei Elementen, die sich nicht in einem Namespace befinden).

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X