libxml2

1. libxml2

Logan
gabriel_logan

(usa Debian)

Enviado em 09/02/2010 - 16:34h

Galera,

Achei um exemplo de como ler aquivos xml, rodou perfeitamente, fiz a leitura (reader1 test2.xml) de uns arquivos aqui e tal...


//==============================================================
/**
* section: xmlReader
* synopsis: Parse an XML file with an xmlReader
* purpose: Demonstrate the use of xmlReaderForFile() to parse an XML file
* and dump the informations about the nodes found in the process.
* (Note that the XMLReader functions require libxml2 version later
* than 2.6.)
* usage: reader1 <filename>
* test: reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp
* author: Daniel Veillard
* copy: see Copyright for the status of this software.
*/
//------------
//COPILED: gcc `xml2-config --cflags --libs` -o reader1 reader1.c
//------------
#include <stdio.h>
#include <libxml/xmlreader.h>

#ifdef LIBXML_READER_ENABLED

/**
* processNode:
* @reader: the xmlReader
*
* Dump information about the current node
*/
static void
processNode(xmlTextReaderPtr reader) {
const xmlChar *name, *value;

name = xmlTextReaderConstName(reader);
if (name == NULL)
name = BAD_CAST "--";

value = xmlTextReaderConstValue(reader);

printf("%d %d %s %d %d",
xmlTextReaderDepth(reader),
xmlTextReaderNodeType(reader),
name,
xmlTextReaderIsEmptyElement(reader),
xmlTextReaderHasValue(reader));
if (value == NULL)
printf("\n");
else {
if (xmlStrlen(value) > 40)
printf(" %.40s...\n", value);
else
printf(" %s\n", value);
}
}

/**
* streamFile:
* @filename: the file name to parse
*
* Parse and print information about an XML file.
*/
static void
streamFile(const char *filename) {
xmlTextReaderPtr reader;
int ret;

reader = xmlReaderForFile(filename, NULL, 0);
if (reader != NULL) {
ret = xmlTextReaderRead(reader);
while (ret == 1) {
processNode(reader);
ret = xmlTextReaderRead(reader);
}
xmlFreeTextReader(reader);
if (ret != 0) {
fprintf(stderr, "%s : failed to parse\n", filename);
}
} else {
fprintf(stderr, "Unable to open %s\n", filename);
}
}

int main(int argc, char **argv) {
if (argc != 2)
return(1);

/*
* this initialize the library and check potential ABI mismatches
* between the version it was compiled for and the actual shared
* library used.
*/
LIBXML_TEST_VERSION

streamFile(argv[1]);

/*
* Cleanup function for the XML library.
*/
xmlCleanupParser();
/*
* this is to debug memory for regression tests
*/
xmlMemoryDump();
return(0);
}

#else
int main(void) {
fprintf(stderr, "XInclude support not compiled in\n");
exit(1);
}
#endif
//==============================================================


Agora tentei abrir um arquivo xml da internet mas nao deu certo, vejam:

cd '/home/logan/ex3'
logan@debian:~$ cd '/home/logan/ex3'
logan@debian:~/ex3$ '/home/logan/ex3/reader1' 'http://www.ovh.pt/produtos/dotie.xml'
error : Operation in progress
Unable to open http://www.ovh.pt/produtos/dotie.xml
logan@debian:~/ex3$

ALGUEM PODERIA ME AJUDAR? COMO FACO PRA ACESSAR UM XML PELA INTERNET?
OBRIGADO

GABRIEL



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts