<?xml version="1.0" encoding="GB2312"?>
<Body>
<Head fsfid="" jsfid="" sjblx="" scsj="20130815040000" jls="0010"/>
<Data>
<Item objectid="000232132400100" pollutant_code="CurDate" value="2013-08-15" equip_status="N"/>
<Item objectid="000232132400100" pollutant_code="CurTime" value="04:00:00" equip_status="N"/>
<Item objectid="000232132400100" pollutant_code="SO2" value="0.0438" equip_status="N" unit="mg/m3"/>
<Item objectid="000232132400100" pollutant_code="NO" value="0.0048" equip_status="N" unit="mg/m3"/>
<Item objectid="000232132400100" pollutant_code="NOX" value="0.0296" equip_status="N" unit="mg/m3"/>
<Item objectid="000232132400100" pollutant_code="NO2" value="0.0248" equip_status="N" unit="mg/m3"/>
<Item objectid="000232132400100" pollutant_code="PM10" value="0.0593" equip_status="N" unit="mg/m3"/>
<Item objectid="000232132400100" pollutant_code="TEMP" value="19.3" equip_status="N" unit="C"/>
<Item objectid="000232132400100" pollutant_code="RH" value="55.0" equip_status="N" unit="%"/>
<Item objectid="000232132400100" pollutant_code="BP" value="99.8" equip_status="N" unit="Kpa"/>
<Item objectid="000232132400100" pollutant_code="WD" value="196" equip_status="N" unit="deg"/>
<Item objectid="000232132400100" pollutant_code="WS" value="3.8" equip_status="N" unit="m/s"/>
</Data>
</Body>
小弟刚刚接触xml  请高手帮忙指点一下c语言xml

解决方案 »

  1.   

    http://support.microsoft.com/kb/815658
      

  2.   

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <libxml/xmlmemory.h>
    #include <libxml/parser.h>void  parseBody (xmlDocPtr doc, xmlNodePtr cur) {   
    xmlChar *ob;  //objectid
    xmlChar *po;  //pollutant
    xmlChar *va;  //value
    xmlChar *es;  //equip_status 
    cur = cur->xmlChildrenNode;  
    while (cur != NULL) {      
    if ((!xmlStrcmp(cur->name, (const xmlChar *)"objectid"))) {       
    ob = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);       
    printf("objectid: %s\n", ob);       
    xmlFree(ob);       
    }
    if ((!xmlStrcmp(cur->name, (const xmlChar *)"pollutant"))) {       
    po = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);       
    printf("pollutant: %s\n", po);       
    xmlFree(po);       
    }  
    if ((!xmlStrcmp(cur->name, (const xmlChar *)"value"))) {       
    va = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);       
    printf("value: %s\n", va);       
    xmlFree(va);       
    }  
    if ((!xmlStrcmp(cur->name, (const xmlChar *)"equip_status"))) {       
    es = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);       
    printf("equip_status: %s\n", es);       
    xmlFree(es);       
    }    
    cur = cur->next;  

          
    return; 
    }
    static void  parseDoc(char *docname) {
      xmlDocPtr doc;  
    xmlNodePtr cur;   
    doc = xmlParseFile(docname);   
    if (doc == NULL ) {   
    fprintf(stderr,"Document not parsed successfully. \n");   
    return;  


    cur = xmlDocGetRootElement(doc);

    if(cur == NULL){
    fprintf(stderr,"empty document\n");
    xmlFreeDoc(doc);
    return;
    }

    if(xmlStrcmp(cur->name, (const xmlChar *) "Body")){
    fprintf(stderr,"document of the wrong type, root node != Body");
    xmlFreeDoc(doc);   
    return;
    } cur = cur->xmlChildrenNode;
    while(cur != NULL){
    if((!xmlStrcmp(cur->name,(const xmlChar *)"Data"))){
    parseBody(doc,cur);
    } cur = cur->next;
    } xmlFreeDoc(doc);
    return;
    }int main(int argc, char** argv){

    char *docname; if(argc <= 1){
    printf("Usage: %s docname\n", argv[0]);
    } docname = argv[1];
    parseDoc("11");//文件名为11.xml
    return(1);
    }我这么写的 请问对么?