tinyXML生成与解析

需要解析的文件如下


 
 
 
 

 
 
 

--------------------------------------------------------------------

#include

#include

#include "tinystr.h"
#include "tinyxml.h"


using namespace std;


void readXmlFile() 
{
    const char * xmlFile = "school-write.xml";
    TiXmlDocument doc;                              
    if (doc.LoadFile(xmlFile)) {
        doc.Print();
    } else {
        cout << "can not parse xml school-write.xml" << endl;
        return;
    }
    TiXmlElement* rootElement = doc.RootElement();  //School元素  
TiXmlElement* departMentElement = rootElement->FirstChildElement();
    for (; departMentElement != NULL; departMentElement = departMentElement->NextSiblingElement() )
{
//获得student的name属性  
        TiXmlAttribute* attributeOfDepartMent = departMentElement->FirstAttribute();
        for (;attributeOfDepartMent != NULL; attributeOfDepartMent = attributeOfDepartMent->Next() ) 
{
            cout << attributeOfDepartMent->Name() << " : " << attributeOfDepartMent->Value() << std::endl;       
        }                                 

//获得student的第一个联系方式
        TiXmlElement* StaffElement = departMentElement->FirstChildElement();        
TiXmlAttribute* attributeOfStaff = StaffElement->FirstAttribute();
for (;attributeOfStaff != NULL; attributeOfStaff = attributeOfStaff->Next() ) 
{
            cout << attributeOfStaff->Name() << " : " <Value() << std::endl;       
        }    

    }
}


void writeSchoolXml() 
{
    const char * xmlFile = "school-write.xml"; 
    TiXmlDocument doc;  
    TiXmlDeclaration * decl = new TiXmlDeclaration("1.0", "", "");  
    TiXmlElement * schoolElement = new TiXmlElement( "School" );  
    TiXmlElement * classElement = new TiXmlElement( "Class" );  
    classElement->SetAttribute("name", "C++");

    TiXmlElement * stu1Element = new TiXmlElement("Student");
    stu1Element->SetAttribute("name", "tinyxml");
    stu1Element->SetAttribute("number", "123");
    TiXmlElement * stu1EmailElement = new TiXmlElement("email");
    stu1EmailElement->LinkEndChild(new TiXmlText("[email protected]") );
    TiXmlElement * stu1AddressElement = new TiXmlElement("address");
    stu1AddressElement->LinkEndChild(new TiXmlText("中国"));
    stu1Element->LinkEndChild(stu1EmailElement);
    stu1Element->LinkEndChild(stu1AddressElement);

    TiXmlElement * stu2Element = new TiXmlElement("Student");
    stu2Element->SetAttribute("name", "jsoncpp");
    stu2Element->SetAttribute("number", "456");
    TiXmlElement * stu2EmailElement = new TiXmlElement("email");
    stu2EmailElement->LinkEndChild(new TiXmlText("[email protected]"));
    TiXmlElement * stu2AddressElement = new TiXmlElement("address");
    stu2AddressElement->LinkEndChild(new TiXmlText("美国"));
    stu2Element->LinkEndChild(stu2EmailElement);
    stu2Element->LinkEndChild(stu2AddressElement);

    classElement->LinkEndChild(stu1Element);  
    classElement->LinkEndChild(stu2Element);  
    schoolElement->LinkEndChild(classElement);  
    
    doc.LinkEndChild(decl);  
    doc.LinkEndChild(schoolElement); 
    doc.SaveFile(xmlFile);  
}




void WriteXmlFile()
{
TiXmlDocument XmlDoc;
TiXmlDeclaration *XmlDel = new TiXmlDeclaration("1.0", "gb2312", "");

//公司
TiXmlElement *CompanyElement  = new TiXmlElement("Company");
CompanyElement->SetAttribute("name", "凯通");

//研发部
TiXmlElement *RD_DepartmentElement  = new TiXmlElement("department");
RD_DepartmentElement->SetAttribute("name", "研发部");
TiXmlElement *RD_StaffElement1    = new TiXmlElement("staff");
RD_StaffElement1->SetAttribute("name", "张三");
RD_StaffElement1->SetAttribute("payment", "102");
TiXmlElement *RD_StaffElement2    = new TiXmlElement("staff");
RD_StaffElement2->SetAttribute("name", "李四");
RD_StaffElement2->SetAttribute("payment", "150");

//市场部
TiXmlElement *MarketDepartmentElement  = new TiXmlElement("department");
MarketDepartmentElement->SetAttribute("name", "市场部");
TiXmlElement *MarketStaffElement    = new TiXmlElement("staff");
MarketStaffElement ->SetAttribute("name", "王五");
MarketStaffElement ->SetAttribute("payment", "130");

RD_DepartmentElement->LinkEndChild(RD_StaffElement1);
RD_DepartmentElement->LinkEndChild(RD_StaffElement2);


MarketDepartmentElement->LinkEndChild(MarketStaffElement);

CompanyElement->LinkEndChild(RD_DepartmentElement);
CompanyElement->LinkEndChild(MarketDepartmentElement);
XmlDoc.LinkEndChild(XmlDel);
XmlDoc.LinkEndChild(CompanyElement);
XmlDoc.Print();


}



int main(int argc, char *argv[])
{
WriteXmlFile();



return 0;
}

你可能感兴趣的:(XML)