The files to be parsed are as follows
<company name="广东凯通">
<department name="研发部">
<staff name="张三" payment="102"/>
<staff name="李四" payment="150"/>
</department>
<department name="市场部">
<staff name="王五" payment="130"/>
</department>
</company>
--------------------------------------------------------------------
#include <iostream>
#include <string>
#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() ) //Get the name property of the student
{
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() << " : "<<attributeOfStaff->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; }