Quando si utilizza SAX per analizzare un file XML in Java, qual è la differenza tra i parametri localname e qname in metodi SAX come startElement(String uri, String localName,String qName, Attributes attributes)
?Qual è la differenza tra localname e qname?
risposta
Per impostazione predefinita, un lettore XML segnalerà un URI dello spazio dei nomi e un nome locale per ogni elemento che appartiene a uno spazio dei nomi, nel gestore di inizio e di fine.
consideri il seguente esempio:
<html:hr xmlns:html="http://www.w3.org/1999/xhtml"/>
Con la trasformazione dello spazio dei nomi di default SAX2, il lettore XML sarebbe segnalare un evento di inizio e fine elemento con il Namespace URI http://www.w3.org/1999/xhtml e l'hr localName. La maggior parte delle implementazioni XMLReader riportano anche l'originale qName html: hr, ma tale parametro potrebbe essere semplicemente una stringa vuota (ad eccezione degli elementi che non si trovano in uno spazio dei nomi).
In generale, localName è il nome locale, che significa all'interno del namespace. qname, o nome qualificato, è il nome completo (incluso lo spazio dei nomi). Ad esempio, < a: b ...> avrà un nome locale b, ma un qname a: b.
Questo è tuttavia molto generale e dipende dalle impostazioni. Date un'occhiata all'esempio alla fine di questa pagina per un esempio più completo: example
+1 per il link di esempio. – Kowser
Il nome completo include sia il prefisso dello spazio dei nomi che il nome locale: att1
e foo:att2
.
XML di esempio
<root
xmlns="http://www.example.com/DEFAULT"
att1="Hello"
xmlns:foo="http://www.example.com/FOO"
foo:att2="World"/>
del codice Java:
ATT1
attributi senza un prefisso dello spazio dei nomi non si solleva il namespace di default. Ciò significa che mentre lo spazio dei nomi per l'elemento root
è "http://www.example.com/DEFAULT"
, lo spazio dei nomi per l'attributo 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"
- 1. Qual è la differenza tra = e: =
- 2. Qual è la differenza tra Verilog! e ~?
- 3. Qual è la differenza tra? : e ||
- 4. qual è la differenza tra [[], []] e [[]] * 2
- 5. Qual è la differenza tra $ e $$?
- 6. Qual è la differenza tra ("") e (null)
- 7. Qual è la differenza tra dict() e {}?
- 8. Qual è la differenza tra " " e ""?
- 9. Qual è la differenza tra {0} e ""?
- 10. Qual è la differenza tra `##` e `hashCode`?
- 11. Qual è la differenza tra {0} e +?
- 12. Qual è la differenza tra .ToString() e + ""
- 13. qual è la differenza tra:.! e: r !?
- 14. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 15. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 16. Qual è la differenza tra il callback e la promessa
- 17. Qual è la differenza tra la sezione .got e .got.plt?
- 18. Qual è la differenza tra la lista() e []
- 19. Qual è la differenza tra GHC e la piattaforma Haskell?
- 20. Qual è la differenza tra sé e la finestra?
- 21. Qual è la differenza tra la cartella vim72 e vimfiles?
- 22. Qual è la differenza tra la serratura e RLock
- 23. Qual è la differenza tra la funzione() {}() e function() {}()
- 24. Qual è la differenza tra la crittografia SHA e AES?
- 25. Qual è la differenza tra la [OptionalField] e [NonSerialized]
- 26. Qual è la differenza tra Chisel e Lava e CLaSH?
- 27. Qual è la differenza tra queste funzioni
- 28. Qual è la differenza tra queste funzioni?
- 29. Qual è la differenza tra Response.Write() eResponse.Output.Write()?
- 30. Qual è la differenza tra applicationDidReceiveMemoryWarning, didReceiveMemoryWarning?
Domanda: sarà il QName essere il prefisso + ':' + il nome locale, o sarà '{' + namespace URI + '}' + nome locale? Ad esempio: '{http://www.w3.org/1999/xhtml} hr'. Perché un prefisso lega un elemento a uno spazio dei nomi, ma la sua stringa effettiva non dovrebbe avere importanza. Qualificato = spazio dei nomi e nome locale. –
Sarà 'prefisso +": "+ nome locale'. (Ma puoi scoprirlo guardando nel Javadoc, o nell'output di un parser - perché lo chiedi qui?) –