What is the difference between localname and qname?

前端 未结 3 1436
说谎
说谎 2020-12-13 18:56

When using SAX to parse an XML file in Java, what is the difference between the parameters localname and qname in SAX methods such as

相关标签:
3条回答
  • 2020-12-13 19:08

    The qualified name includes both the namespace prefix and the local name: att1 and foo:att2.

    Sample XML

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

    Java Code:

    att1

    Attributes without a namespace prefix do not pick up the default namespace. This means while the namespace for the root element is "http://www.example.com/DEFAULT", the namespace for the att1 attribute is "".

    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"
    
    0 讨论(0)
  • 2020-12-13 19:16

    By default, an XML reader will report a Namespace URI and a localName for every element that belongs in a namespace, in both the start and end handler.

    Consider the following example:

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

    With the default SAX2 Namespace processing, the XML reader would report a start and end element event with the Namespace URI http://www.w3.org/1999/xhtml and the localName hr. Most XMLReader implementations also report the original qName html:hr, but that parameter might simply be an empty string (except for elements that aren't in a namespace).

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

    0 讨论(0)
  • 2020-12-13 19:32

    Generally speaking, localname is the local name, meaning inside the namespace. qname, or qualified name, is the full name (including namespace). For example, <a:b …> will have a localname b, but a qname a:b.

    This is however very general, and settings-dependant. Take a look at the example at the end of this page for a more thorough example: example

    0 讨论(0)
提交回复
热议问题