Página 1 de 1

Pregunta 29. StAX

Publicado: 21 Oct 2010, 23:36
por Walia
29. Respecto al API, Streaming API for XML (StAX), indicar la afirmación correcta:
a) Emplea "push parsing".
b) Permite vistas XML de datos no XML.
c) Es un API unidireccional.
d) El cliente del API no controla el thread de la aplicación.
Correcta la b)

Esta pregunta se las trae... ¿Hay alguien que se encuentre ducho en esto y se sienta con seguridad para impugnar esta?

Yo me he vuelto a revisar la JSR-173, que es donde se supone que se especifica la API StAX, y no he visto en ningún lado que se puedan visualizar datos no-XML como si fuesen XML.

Además, puede verificarse en http://jcp.org/en/jsr/all que no hay ninguna JSR posterior que extienda, amplíe o obsolete la JSR-173, por lo que esta es la especificación de referencia.

Lo más parecido a lo que dice la pregunta es que se podrá incluir una opción de entrada de entidades externas en la implementación, pero no especifica que puedan ser no-XML. Es más, en los capítulos iniciales se especifica claramente que la aplicación que implemente StAX debe encargarse de la conversión a/de XML.

Yo contesté la a) porque la b) la descartaba de pleno. Sabía que era pull, pero pensaba que podía utilizarse push como opción.

¿Hay alguien que conozca algún sitio en el que se diga que el API StAX puede visualizar datos no-XML?. Es posible que haya alguna implementación concreta que lo implemente, pero eso no sirve para ponerlo en un examen ¿?

Re: Pregunta 29. StAX

Publicado: 21 Oct 2010, 23:53
por cantimploro
Yo esta la tengo mal así que si hay algo impugnable, cuenta conmigo. Revisitémoslo a ver... aparte de la JSR, hay un tutorial en http://download.oracle.com/docs/cd/E178 ... StAX2.html

Según este documento:
StAX: Pull, streaming
SAX: Push, streaming
DOM: In memory tree
TrAX: XSLT Rule
A StAX pull parser can filter XML documents such that elements unnecessary to the client can be ignored, and it can support XML views of non-XML data.
StAX is a bidirectional API, meaning that it can both read and write XML documents. SAX is read only, so another API is needed if you want to write XML documents.
With pull parsing, the client controls the application thread, and can call methods on the parser when needed. By contrast, with push processing, the parser controls the application thread, and the client can only accept invocations from the parser.
O sea, según esto la respuesta de la plantilla es la correcta. Esto no deja de ser un tutorial de Java, y si no está recogido en la JSR lo mismo hay algún resquicio para impugnarlo, pero no soy muy optimista.

Re: Pregunta 29. StAX

Publicado: 22 Oct 2010, 00:07
por Walia
Gracias por el link. Me confirma que el examen lo han montado unos expertos en sacar citas de Google.

Lo que dice el tutorial es siempre en el contexto de los streams XML. Siempre, dentro de los streams XML.
Pull parsing provides several advantages over push parsing when working with XML streams:

- With pull parsing, the client controls the application thread, and can call methods on the parser when needed. By contrast, with push processing, the parser controls the application thread, and the client can only accept invocations from the parser.
- Pull parsing libraries can be much smaller and the client code to interact with those libraries much simpler than with push libraries, even for more complex documents.
- Pull clients can read multiple documents at one time with a single thread.
- A StAX pull parser can filter XML documents such that elements unnecessary to the client can be ignored, and it can support XML views of non-XML data.
El documento completo está en
http://download.oracle.com/docs/cd/E178 ... torial.pdf

y en 283 páginas no vuelve a mencionar esa misteriosa capacidad que presume para el StAX.

No sé hasta que punto valdrá. De todos modos, me parece que habría que darle más pábulo a una especificación que a una frase en un tutorial. En la JSR-173 se describen los métodos accesibles.

A ver que puede hacerse. Lo sigo viendo factible

Re: Pregunta 29. StAX

Publicado: 24 Oct 2010, 01:25
por cantimploro
No se si has podido encontrar algo específico sobre esto, finalmente?

Re: Pregunta 29. StAX

Publicado: 24 Oct 2010, 13:29
por Orion
Aquí lo dice todo: http://www.xml.com/lpt/a/1287

a) "StAX is a pull parsing API for XML..."
b) "It can support XML views of non-XML data."
c) "StAX is not limited to reading XML documents. It can also create them."
d) "in StAX the application is in control rather than the parser."

Yo todavía no he terminado de entender la frase "El cliente del API no controla el thread de la aplicación.", porque pienso que el cliente del API es la aplicación que lo invoca, ¿no?.

Re: Pregunta 29. StAX

Publicado: 24 Oct 2010, 19:52
por Walia
Pues sí que he consultado a gente que conoce el Java y el StAX y todo eso, y la conclusión es que la opción xxx es VERDADERA a todas luces, y puesto que se pregunta por la falsa, no hay más que hablar :( .

Lo de las vistas XML de datos no XML es muy sencillo, y tan básico como que precisamente los módulos del API StAX lo que hacen es generar XML desde los objetos que le pase la aplicación. Entiendo que en este caso es como todos los parsers que generen XML: que crean el XML a partir de estructuras de datos en memoria.

Re: Pregunta 29. StAX

Publicado: 24 Oct 2010, 20:29
por cantimploro
Bueno, al menos hemos aprendido algo. Gracias.