[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 128: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4714: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4716: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4717: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4718: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
curiosoperoinutil.com • Ver Tema - Parser de XML para C/C++
Fecha actual Vie 20 Sep 2024, 22:22

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 14 mensajes ] 
Autor Mensaje
NotaPublicado: Mié 03 Ene 2007, 04:14 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)
A ver que os comente. Para el proyecto del máster hay una parte que para trabajar con datos vamos a usar XML. Encontré la api Xerces para XML en C/C++ y tras las primeras pruebas y después de pegarme un poco con él, parece que me iba bastante bien y tenía poco que adaptar.

El problema ha venido cuando he querido navegar por el documento DOM y es que no hay manera de manejar atributos, porque, o casca por no sé qué movida del tipo de llamada de la función o rasca por otro lado que tampoco sé por qué es. Lo que tengo claro es que no es por mi código, porque algo tan sencillito:

[...] // código que ya funcionaba antes y que básicamente
// crea un árbol DOM a partir de un fichero XML


DOMElementImpl* raiz = (DOMElementImpl*) doc->getDocumentElement();
DOMElementImpl* nivel = (DOMElementImpl*) raiz->getFirstChild();


XMLCh* name = XMLString::transcode("name");
DOMAttr* attr = nivel->getAttributeNode(name);
char* mostrar = XMLString::transcode(attr->getValue());
cout << "El nombre del mapa es " << mostrar << endl;


no tiene nada del otro mundo. Como habréis podido observar, utiliza su propio char*, que lo llama XMLCh (lo que luego viene a ser un unsigned short*). Bueno, pues al hace la llamada nivel->getAttributeNode(name); rasca en código del propio Xerces un error muy raro.

La línea en la que rasca es:

XMLCh* newString;
XMLCh temp[4000];
>>> if (len >= 3999) //sí en el if rasca - el valor de len es 2
newString = (XMLCh*) ((DOMDocumentImpl *)node->getOwnerDocument())->getMemoryManager()->allocate



y el error que me da el Mierdasoft Visual Studio es:

Excepción no controlada en 0x7c81eb33 en PruebaXML.exe: Microsoft C++ exception: xercesc_2_7::DOMException @ 0x0012cca0.

De verdad que estoy hasta los mismísimos. He probado unas cuantas variantes, pero no funciona ninguna por diversos motivos. Si alguno sabéis de algún parser, alguna api o, simplemente, código que funcione, aunque lo tenga que adaptar, os lo agradecería enormemente, porque llevo 2 días seguidos aquí parado y no avanzo.

Obviamente, si conocéis cuál es el error, mejor que mejor, pero así, a pelo y sin contexto sé que es muy difícil.


PD: ¿Esto debería ir aquí o en el Consultorio?

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 15:03 
Desconectado
CPI naranja
CPI naranja
Avatar de Usuario

Registrado: Mié 05 Abr 2006, 12:25
Mensajes: 4434
Ubicación: La Palma/Gran Canaria (España)

_________________
Depurar código es el doble de duro que escribirlo. Por tanto, si escribes el código lo más inteligentemente que te sea posible, no eres, por definición, lo suficientemente inteligente para depurarlo.

-- Brian Kernighan

$m[1]$m[1] * 17 $m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 16:14 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 16:40 
Desconectado
CPI naranja
CPI naranja
Avatar de Usuario

Registrado: Mié 05 Abr 2006, 12:25
Mensajes: 4434
Ubicación: La Palma/Gran Canaria (España)

_________________
Depurar código es el doble de duro que escribirlo. Por tanto, si escribes el código lo más inteligentemente que te sea posible, no eres, por definición, lo suficientemente inteligente para depurarlo.

-- Brian Kernighan

$m[1]$m[1] * 17 $m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 16:59 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 17:06 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)
Volviendo a probar lo que acabo de postear, me ha rascado como te he comentado. El tema es que he "limpiado" la solución de Visual Studio y milagrosamente ahora sí que compila. Esto de que tengas que limpiar la solucion es una chapuza de coj****.

Pero bueno, aún dejando de usar el DOMElementImpl y usar el DOMElement y habiendo limpiado la solución, sigue rascando al ejecutar los métodos del DOMElement.

Si en vez de coger el atributo entero, sólo cojo el valor, que era lo que hacía al principio, en vez de salir el error de arriba pone:

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

Para el código:

DOMElement* raiz = doc->getDocumentElement();
DOMElement* nivel = (DOMElement*) raiz->getFirstChild();
DOMElement* size = (DOMElement*) nivel->getFirstChild();

XMLCh* name = XMLString::transcode("name");
XMLCh* attr = (XMLCh*) nivel->getAttribute(name);
char* mostrar = XMLString::transcode(attr);
cout << "El nombre del mapa es " << mostrar << endl;


He leído por ahí, que el error se debe a que no se utiliza la convención de función como se debiera o que se usa una distinta. Pero vamos, que tampoco sé cómo arreglarlo.

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 17:16 
Desconectado
CPI naranja
CPI naranja
Avatar de Usuario

Registrado: Mié 05 Abr 2006, 12:25
Mensajes: 4434
Ubicación: La Palma/Gran Canaria (España)

_________________
Depurar código es el doble de duro que escribirlo. Por tanto, si escribes el código lo más inteligentemente que te sea posible, no eres, por definición, lo suficientemente inteligente para depurarlo.

-- Brian Kernighan

$m[1]$m[1] * 17 $m[1]


Última edición por Heimy el Mié 03 Ene 2007, 17:32, editado 1 vez en total

Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 17:20 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)
Vale, mecagüen... :proteston: :proteston: :proteston: :proteston:
:proteston: :proteston: :proteston: :proteston: :proteston: :proteston:

Viene siendo que el problema era que no crea bien el árbol DOM, ya que si tengo el XML así:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<niveles><nivel name='Mapa'><size tilesX='4' tilesY='5'/></nivel></niveles>


O séase, sin espacio alguno entre los elementos, funciona perfectamente. Vamos que como la parte de leer el XML y parsearlo yo me pensaba que ya la hacía perfectamente porque al mostrarlo por pantalla se veía todo bien y al copiarlo a un fichero también pues ya pasé.

Así que resulta que debe haber una opción para que se trague los espacios, los retornos de carro y las tabulaciones.

Heimy, ¿sabes por casualidad cuál es esa opción o parámetro? Si no la sabes o no te acuerdas no lo andes buscando, que lo busco yo.

De verdad, como me revientan estas cosas. Ver que llevas 2 días con lo mismo, que no tira y luego descubres que es por tan tremenda memez...
:proteston: :proteston: :proteston: :proteston: :proteston:

En fin, a ver si puedo recuperar el tiempo perdido...

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 17:43 
Desconectado
CPI naranja
CPI naranja
Avatar de Usuario

Registrado: Mié 05 Abr 2006, 12:25
Mensajes: 4434
Ubicación: La Palma/Gran Canaria (España)

_________________
Depurar código es el doble de duro que escribirlo. Por tanto, si escribes el código lo más inteligentemente que te sea posible, no eres, por definición, lo suficientemente inteligente para depurarlo.

-- Brian Kernighan

$m[1]$m[1] * 17 $m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 17:47 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 18:11 
Desconectado
CPI naranja
CPI naranja
Avatar de Usuario

Registrado: Mié 05 Abr 2006, 12:25
Mensajes: 4434
Ubicación: La Palma/Gran Canaria (España)

_________________
Depurar código es el doble de duro que escribirlo. Por tanto, si escribes el código lo más inteligentemente que te sea posible, no eres, por definición, lo suficientemente inteligente para depurarlo.

-- Brian Kernighan

$m[1]$m[1] * 17 $m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Mié 03 Ene 2007, 18:46 
Desconectado
CPI naranja
CPI naranja
Avatar de Usuario

Registrado: Mié 05 Abr 2006, 12:25
Mensajes: 4434
Ubicación: La Palma/Gran Canaria (España)

_________________
Depurar código es el doble de duro que escribirlo. Por tanto, si escribes el código lo más inteligentemente que te sea posible, no eres, por definición, lo suficientemente inteligente para depurarlo.

-- Brian Kernighan

$m[1]$m[1] * 17 $m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Jue 04 Ene 2007, 00:02 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: Jue 04 Ene 2007, 00:38 
Desconectado
CPI plutonio
CPI plutonio
Avatar de Usuario

Registrado: Mié 16 Ago 2006, 01:30
Mensajes: 1506
Ubicación: Madrid(Workweek) Salamanca(Weekend)

_________________
$m[1]
$m[1]$m[1]$m[1]$m[1]$m[1]


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 14 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
POWERED_BY
Traducción al español por Huan Manwë para phpbb-es.com