Al usar SAX para analizar un archivo XML en Java, ¿cuál es la diferencia entre los parámetros nombre local y qname en métodos SAX como startElement(String uri, String localName,String qName, Attributes attributes)
?¿Cuál es la diferencia entre localname y qname?
Respuesta
De forma predeterminada, un lector XML informará un URI de espacio de nombres y un nombre local para cada elemento que pertenece a un espacio de nombres, tanto en el controlador de inicio como de final.
Consideremos el siguiente ejemplo:
<html:hr xmlns:html="http://www.w3.org/1999/xhtml"/>
Con el procesamiento de SAX2 espacio de nombres por defecto, el lector XML podría reportar un evento de inicio y final elemento con el URI de espacio y la http://www.w3.org/1999/xhtml hr localName. La mayoría de las implementaciones de XMLReader también informan sobre el nombre original hName html: hr, pero ese parámetro podría ser simplemente una cadena vacía (excepto para los elementos que no están en un espacio de nombres).
En términos generales, nombre_local es el nombre local, es decir, dentro del espacio de nombres. qname, o nombre calificado, es el nombre completo (incluido el espacio de nombres). Por ejemplo, < a: b ...> tendrá un nombre local b, pero un nombre q a: b.
Sin embargo, esto es muy general y depende de la configuración. Mire el ejemplo al final de esta página para un ejemplo más completo: example
+1 para el enlace del ejemplo. – Kowser
El nombre calificado incluye tanto el prefijo del espacio de nombres como el nombre local: att1
y foo:att2
.
XML de ejemplo
<root
xmlns="http://www.example.com/DEFAULT"
att1="Hello"
xmlns:foo="http://www.example.com/FOO"
foo:att2="World"/>
Código Java:
ATT1
atributos sin un prefijo de espacio de nombres no recoger el espacio de nombres predeterminado. Esto significa que mientras el espacio de nombre para el elemento root
es "http://www.example.com/DEFAULT"
, el espacio de nombre para el atributo att1
es ""
.
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. ¿Cuál es la diferencia entre {0} y ""?
- 2. Cuál es la diferencia entre = y: =
- 3. ¿Cuál es la diferencia entre .ToString (+) y ""
- 4. Cuál es la diferencia entre $ (...) y `...`
- 5. ¿cuál es la diferencia entre:.! y: r !?
- 6. ¿Cuál es la diferencia entre ".equals" y "=="?
- 7. ¿Cuál es la diferencia entre dict() y {}?
- 8. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 9. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 10. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 11. ¿Cuál es la diferencia entre + = y = +?
- 12. ¿Cuál es la diferencia entre " " y ""?
- 13. Cuál es la diferencia entre $ y jQuery
- 14. ¿Cuál es el uso de QName y clase de operador?
- 15. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 16. Cuál es la diferencia entre la función() {}() y la función() {}()
- 17. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 18. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 19. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 20. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 21. ¿Cuál es la diferencia entre el colado y la coerción?
- 22. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 23. ¿Cuál es la diferencia entre el casting y la conversión?
- 24. ¿Cuál es la diferencia entre WPF y la aplicación Silverlight?
- 25. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 26. ¿Cuál es la diferencia entre CookieContainer y la colección Response.Cookies?
- 27. ¿Cuál es la diferencia entre la relación Composición y Asociación?
- 28. ¿cuál es la diferencia entre el material y la textura?
- 29. ¿Cuál es la diferencia entre el marco y la arquitectura?
- 30. ¿Cuál es la diferencia entre la carpeta vim72 y vimfiles?
Pregunta: ¿el qName sea el prefijo + ':' + el nombre local, o va a ser '{' + URI de espacio + '}' + ¿nombre local? De esta manera: '{http://www.w3.org/1999/xhtml} hr'. Porque un prefijo vincula un elemento a un espacio de nombres, pero su cadena real no debería tener importancia. Calificado = espacio de nombres y nombre local. –
Será 'prefijo +": "+ nombre local'. (Pero puede averiguarlo mirando en el Javadoc, o en el resultado de un analizador sintáctico, ¿por qué pregunta aquí?) –