本地名和 qname 有什么区别?
当使用 SAX 解析 Java 中的 XML 文件时,SAX 方法中的参数 localname 和 qname 有什么区别,例如 ?startElement(String uri, String localName,String qName, Attributes attributes)
当使用 SAX 解析 Java 中的 XML 文件时,SAX 方法中的参数 localname 和 qname 有什么区别,例如 ?startElement(String uri, String localName,String qName, Attributes attributes)
限定名包括命名空间前缀和本地名称:和 。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"
一般来说,localname 是本地名称,表示在命名空间内。qname 或限定名是全名(包括命名空间)。例如,<a:b ...>将有一个本地名称 b,但有一个 qname a:b。
但是,这是非常通用的,并且与设置相关。请看一下本页末尾的示例,以获取更全面的示例:示例