Java'da XML dosyasını ayrıştırmak için SAX kullanırken, yerel adı ve qname arasındaki startElement(String uri, String localName,String qName, Attributes attributes)
gibi SAX yöntemlerinde arasındaki fark nedir?Yerel ad ve qname arasındaki fark nedir?
cevap
Varsayılan olarak, bir XML okuyucu, hem başlangıç hem de son işleyicide, ad alanına ait her öğe için bir Ad Alanı URI'sı ve bir yerelAdı bildirecektir. Varsayılan SAX2 Ad işleme ile
<html:hr xmlns:html="http://www.w3.org/1999/xhtml"/>
XML okuyucusu Namespace URI
http://www.w3.org/1999/xhtml ve localName saat ile bir başlangıç ve bitiş elemanı olayı rapor verecek:
aşağıdaki örneği ele alalım. Çoğu XMLReader uygulaması ayrıca orijinal qName html: hr bildirir, ancak bu parametre boş bir dize olabilir (ad alanında olmayan öğeler hariç).
Genel olarak konuşursak, localName isim alanı içinde, yani yerel adıdır. qname veya nitelikli ad, tam addır (ad alanı dahil). Örneğin, < a: b…> bir yerel ada sahip olur, ancak bir qname a: b.
Ancak bu, çok genel ve ayarlara bağlı. Daha kapsamlı bir örnek için bu sayfanın sonundaki örneğe bakın: example
+1. – Kowser
Nitelikli ad hem ad alanı önekini hem de yerel adı içerir: att1
ve foo:att2
.
Örnek XML
<root
xmlns="http://www.example.com/DEFAULT"
att1="Hello"
xmlns:foo="http://www.example.com/FOO"
foo:att2="World"/>
Java Kodu: varsayılan ad alanını açmıyorsun bir ad alanı öneki olmadan
att1
Nitelikler. Bu, root
öğesinin ad alanı "http://www.example.com/DEFAULT"
iken, att1
özniteliğinin ad alanı ""
olur.
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"
Soru: ':' QName öneki + olacak + yerel adı veya öyle olacak '{' + alanı tanım + '}' + yerel ad? Şöyle: '{http://www.w3.org/1999/xhtml} hr'. Bir önek bir öğeyi bir ad alanına bağladığından, gerçek dizgisi önemsiz olmamalıdır. Nitelikli = ad alanı ve yerel ad. –
"Önek +": "+ localname" olacaktır. (Ama bunu Javadoc'a bakarak veya bir ayrıştırıcının çıktısında bulabilirsiniz - örnek olarak neden burada soruyorsunuz?) –