#include
#include
#include
#include
using namespace std;
//编译选项
gcc `xml2-config --cflags --libs` testxml.cpp
g++ `xml2-config --cflags --libs` testxml.cpp
g++ `xml2-config --cflags --libs` testxml.cpp
g++ `xml2-config --cflags --libs` testxml.cpp
g++ `xml2-config --cflags --libs` testxml.cpp
g++ `xml2-config --cflags --libs` testxml.cpp
void printAttribute(xmlTextReaderPtr reader)
{
if(1 == xmlTextReaderHasAttributes(reader))
{
xmlChar *name,*value;
int res = xmlTextReaderMoveToFirstAttribute(reader);
while(1 == res)
{
name = (xmlChar*)xmlTextReaderConstName(reader);
value = (xmlChar*)xmlTextReaderConstValue(reader);
fprintf(stderr, "\tattribute=[%s],value=[%s]\n", name, value);
res=xmlTextReaderMoveToNextAttribute(reader);
}
xmlTextReaderMoveToElement(reader);
}
}
void printNode(xmlTextReaderPtr reader)
{
const xmlChar *name,*value;
name=xmlTextReaderConstName(reader);
if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_ELEMENT)
{
fprintf(stderr, "startMarkup=%s",name);
printAttribute(reader);
}
else if(xmlTextReaderNodeType(reader)==XML_READER_TYPE_END_ELEMENT)
{
//fprintf(file,"endMarkup=%s",name);
}
else
{
fprintf(stderr, "flag=%s", name);
}
if(xmlTextReaderHasValue(reader))
{
value=xmlTextReaderConstValue(reader);
fprintf(stderr, "\tvalue=%s", value);
}
fprintf(stderr, "\n");
}
int main(int argc, char** argv)
{
static char memory[] = "<?xml version = \"1.0\" encoding = \"utf-8\" ?>"
""
""
"";
xmlTextReaderPtr reader;
reader = xmlReaderForMemory(memory, strlen(memory), NULL, "UTF-8", 0);
if (reader == NULL)
{
cout << "xml file format error!!!!" << endl;
return -1;
}
int ret=xmlTextReaderRead(reader);
while(ret == 1)
{
printNode(reader);
ret=xmlTextReaderRead(reader);
}
//element = xmlTextReaderName(reader);
return 0;
}