#include <stdio.h>
#include <string.h>
#define IN_LIBXML
#include <libxml/xmlreader.h>
static FILE *file;
void printAttribute(xmlTextReaderPtr reader)
{
if(1==xmlTextReaderHasAttributes(reader))
{
xmlChar *name,*value;
int res=xmlTextReaderMoveToFirstAttribute(reader);//首先移动current instance 指向第一个元素
while(1==res)
{
name=xmlTextReaderConstName(reader);
value=xmlTextReaderConstValue(reader);
fprintf(file,"\tattribute=[%s],value=[%s]\n",name,value);
res=xmlTextReaderMoveToNextAttribute(reader);
}
xmlTextReaderMoveToElement(reader);//重新将current instance指向current node, 否则之后读取节点value时会出现混乱
}
}
void printNode(xmlTextReaderPtr reader)
{
const xmlChar *name,*value;
name=xmlTextReaderConstName(reader);
if(xmlTextReaderNodeType(reader)==XML_READER_TYPE_ELEMENT)
{
fprintf(file,"startMarkup=%s",name);
printAttribute(reader);
}else if(xmlTextReaderNodeType(reader)==XML_READER_TYPE_END_ELEMENT)
{
//fprintf(file,"endMarkup=%s",name);
}else
{
fprintf(file,"flag=%s",name);
}
if(xmlTextReaderHasValue(reader))
{
value=xmlTextReaderConstValue(reader);
fprintf(file,"\tvalue=%s",value);
}
fprintf(file,"\n");
}
int main(int argv,char *argc[])
{
LIBXML_TEST_VERSION
//static char buffer[]="<root>"
//"<student>123</student>"
//"</root>";
xmlTextReaderPtr reader;
reader=xmlReaderForFile(argc[1],NULL,XML_PARSE_NOBLANKS);//忽略空节点
//reader=xmlReaderForMemory(buffer,strlen(buffer),"something.xml",NULL,0);
if(reader==NULL)
{
fprintf(stderr,"error to read");
xmlCleanupParser();
return(1);
}
file=fopen("result.xml","w");
int ret=xmlTextReaderRead(reader);
while(ret==1)
{
printNode(reader);
ret=xmlTextReaderRead(reader);
}
fclose(file);
xmlFreeTextReader(reader);
if(ret!=0)
{
fprintf(stderr,"error to read");
xmlCleanupParser();
return(1);
}
xmlCleanupParser();
return(0);
}函数总结:
libxml2常用函数总结libxml2 xmlTextReader 解析xml实例
最新推荐文章于 2020-04-14 11:01:43 发布
使用libxml2库的xmlTextReaderPtr解析XML文件,读取节点属性并输出到result.xml。示例中展示了如何处理XML元素、结束标记及属性,并提供了错误处理和内存清理。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Stable-Diffusion-3.5
图片生成
Stable-Diffusion
Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

2636

被折叠的 条评论
为什么被折叠?



