Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Escribir Xml Desde Servidor

Iniciado por Zeigon, 25 de Febrero de 2004, 07:27:04 PM

« anterior - próximo »

Zeigon

 pues quería hacer en una web la típica sección para q se opine de alguna noticia o imagen o cualquier cosa, q cuando pulsen en el submit del formulario, se actualice la página y aparezca la nueva opinión colgada.

de lo q va es q lea las opiniones de un xml automáticamente y las ponga en la web, según se añadan opiniones, se actualiza el xml y la web.

quisiera hacerlo en xml q será más rápido q tirarse to el rato accediendo a la mysql (y pq no me apetece usar BBDD). para ello quisiera q la opinión q meta el usuario, automáticamente se añada al archivo 'opiniones.xml', por ejemplo. mi pregunta es: cómo escribo un archivo q está en el servidor como es este xml?? hay alguna clase en php o cualquier cosa (q no sea asp o vbscript q no controlo) para actualizar estos archivos xml??

gracias  (ole)  
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

CoLSoN2

 pues tienes funciones muy similares a C: fopen & co
filesystem
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

tamat

 Lo que dices es un tanto absurdo ya que usar XML es 100 veces más lento que usar una DB, piensa que lo que tu pretendes que haga el sistema es:

- Para cada petición de un usuario para ver la web el sistema tiene cargar TODO un XML en memoria, parsearlo (convertirlo a un arbol en memoria), asignar a cada elemento una representación y convertirlo a HTML para devolverselo al usuario.

- Para cada inserción coger el XML, parsearlo de nuevo todo y guardarlo en memoria, encontrar el punto donde tiene que añadir el nuevo elemento, reescribir el XML con ese elemento añadido y guardarlo.

En cambio con una DB es directo, una inserción es escribir en un registro de la DB un dato y para construir la web simplemente vas ejecutando el codigo (php, jsp,...) y cuando topas con una sentencia SQL pues la ejecutas y pones el resultado, algo totalmente procedural y directo.

No digo que no se pueda hacer pero me parece algo que solo es obvio en determinados contextos y que requiere de mucha optimización para que de un rendimiento favorable (guardar el html creado para futuras consultas, etc).

Otra cosa sería usar XSL para formatear el XML lo cual te ahorraría el trabajo, pero seguiria haciendolo el servidor.
Por un stratos menos tenso

Zeigon

 pues es q yo creo q el xml sería más rápido, pq lo de contruir el árbol y todo eso es simplemente cuando muestras el xml en sí en el explorador, lo q yo pensaba hacer es pillar todos los nodos xml con javascript e ir mostrándolos en una tabla, así q lo único q hago con xml es organizar el contenido pero nunca llego a mostrar el xml en el explorador, no sé si me explico. vamos q lo uso a modo de archivo del q leo pero nunca se ve ese archivo en el explorador así q en teoría nunca cargaría el árbol y todo eso.

así q lo q tú dices no sería aplicable a este caso.
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

CoLSoN2

 A ver.. Un XML lo puedes leer de dos formas:
- como fichero ASCII que es, con sus tags y demás, que no creo que sea el caso.
- como jerarquía de elementos:
 documento
     >  noticia
      > >     fecha
      > >     autor
      > >     titulo
etc
Con esto último debes crear un árbol (o usar uno que te cree algún módulo de PHP para cargar XML's) . Así que el árbol SÍ sería necesario. ¿Pero qué problema tienes con usar una BBDD? Por velocidad ya te digo que no hay problema. Además usar ficheros es más engorroso.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

TheWind

Cita de: "Zeigon"pues es q yo creo q el xml sería más rápido, pq lo de contruir el árbol y todo eso es simplemente cuando muestras el xml en sí en el explorador, lo q yo pensaba hacer es pillar todos los nodos xml con javascript e ir mostrándolos en una tabla, así q lo único q hago con xml es organizar el contenido pero nunca llego a mostrar el xml en el explorador, no sé si me explico. vamos q lo uso a modo de archivo del q leo pero nunca se ve ese archivo en el explorador así q en teoría nunca cargaría el árbol y todo eso.

así q lo q tú dices no sería aplicable a este caso.
O sea,  cojes los elementos del arbol sin construir el arbol...

no comments

Zeigon

 yo más q nada lo hacía pq creía q leer de un archivo sería más rápido, pq pensé q el php al leerlo pillaba etiquetas simplemente pero no construía árbol, vamos a ver, me refiero a q tú le pasabas el nombre de la etiqueta a modo de marcador y te cogía el texto, etc. no q te construyera toda la estructura.

y bueno TheWind como acabo de explicar ahora mismo, pues no, no cojo elementos de un árbol pq creía q no hacía eso, pensaba q lo habría como archivo ascii. y gracias por tu opinión tan valiosa como un euro de cartón  <_< .

pero bueno, si tanto engorro de árbol y todo eso sólo para cargar 4 cosas en xml, al final usaré mysql si decís q va incluso más rápido.

gracias  (ole) .
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

Jond

 Zeigon, ademas con un fichero, ya sea
XML, o el formato que te de la gana,
en un servidor, tienes que torear
con los problemas multi acceso.

Me explico:

Cuando llega una petición de un navegador cliente,
el servidor de web (sea el que sea: IIS, Apache, etc),
crea un proceso servidor para cada petición que llega,
de modo concurrente (es decir que mas de uno se ejecuta
a la vez), y por supuesto todos estos proceso como poseen
el mismo codigo, pues claro todos pretenden leer al mismo
fichero.

Para leer no tienes problemas, pero si mas de uno quiere
agregar información.

No puedes abrir un fichero para escribir, que ya esta abierto en modo escritura.
Por lo que cuando un proceso este escribiendo, los otros procesos
petan, al menos que te crees tu propio sistema de semaforos.
Los cuales cualquier simple bd como mysql, ya los tienen implementados.

Y la verdad, espero que quieras recibir bastantes visitas en tu web,
y este problema te lo vas a encontrar en cuanto tengas 3 usuarios
conectados.

Un salu2.

Zeigon

 pues en eso no había pensado. así q supongo q no es plan el ponerse a hacer todo eso pa lo q dices tú, q tampoco van a haber muchas visitas en plan spanishare :P.  supongo q en el jdom xml de php 5 lo harán todo esto.

pues eso q usaré BBDD.

por cierto, dónde habéis leido, por ejemplo CoLSoN2, eso de q sí carga el árbol xml el módulo php?  más q nada por curiosidad, pq siempre viene bien saber esas cosas  :) .
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

CoLSoN2

 que donde lo hemos leído? es que no hay más narices que crear un árbol al cargar un documento xml, para luego poder hacer cosas como

doc = libreria.cargar("pepito.xml")
color = doc["html"]["body"]("bgcolor")

por ejemplo...
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

tamat

Cita de: "CoLSoN2"que donde lo hemos leído? es que no hay más narices que crear un árbol al cargar un documento xml, para luego poder hacer cosas como

doc = libreria.cargar("pepito.xml")
color = doc["html"]["body"]("bgcolor")

por ejemplo...
No te creas, existen dos maneras de trabajar con XML, la que tu comentas es la que usa DOM o TinyXML (cargar y parsear) pero luego está el modo que usa SAX que es mucho más warro y que consiste en que llamas a una función y esta retorna el siguiente elemento encontrado, así tal cual, y tu te encargas de construir el arbol, en algunos casos es util.
Por un stratos menos tenso

Zeigon

 yo es q conocía el método del sax en java que como dice tamat simplemente le indicas el archivo y no lo carga, se crea una estructura interna q represnta el documento, y ya va añadiendo o lo que sea.
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

CoLSoN2

Cita de: "tamat"
No te creas, existen dos maneras de trabajar con XML, la que tu comentas es la que usa DOM o TinyXML (cargar y parsear) pero luego está el modo que usa SAX que es mucho más warro y que consiste en que llamas a una función y esta retorna el siguiente elemento encontrado, así tal cual, y tu te encargas de construir el arbol, en algunos casos es util.
cierto, pero según él quiere cargar todo el fichero no? siendo así usar sax es mucho menos eficiente, porque está pensado para todo lo contrario.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.