⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlparsertestcase.cpp

📁 在Linux C++中解析XML文件 能够创建文件
💻 CPP
字号:
#include "XMLParserTestCase.h"#include <iostream>#include "libxml/parser.h"#include "libxml/xpath.h"#include "Log.h"#include "XMLParserException.h"using namespace std;using namespace Davis;CPPUNIT_TEST_SUITE_REGISTRATION( XMLParserTestCase );XMLParserTestCase::XMLParserTestCase(){}XMLParserTestCase::~XMLParserTestCase(){}void XMLParserTestCase::CreateXMLFile(){	xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");	xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST"root");	xmlDocSetRootElement(doc,root_node);		xmlNodePtr node = xmlNewNode(NULL, BAD_CAST "Printers");	xmlAddChild(root_node,node);		xmlNodePtr printer1 = xmlNewNode(NULL, BAD_CAST "Printer1");	xmlAddChild(node,printer1);	xmlNodePtr port1 = xmlNewNode(NULL, BAD_CAST "Port");	xmlNodePtr port1_content = xmlNewText(BAD_CAST"123");	xmlAddChild(printer1,port1);	xmlAddChild(port1,port1_content);	xmlNewProp(port1,BAD_CAST"name",BAD_CAST "Port1");		xmlNodePtr printer2 = xmlNewNode(NULL, BAD_CAST "Printer2");	xmlAddChild(node,printer2);		xmlNodePtr port2 = xmlNewNode(NULL, BAD_CAST "Port");	xmlNodePtr port2_content = xmlNewText(BAD_CAST"456");	xmlAddChild(printer2,port2);	xmlAddChild(port2,port2_content);	xmlNewProp(port2,BAD_CAST"name",BAD_CAST "Port2");		xmlNodePtr printer3 = xmlNewNode(NULL, BAD_CAST "Printer3");	xmlAddChild(node,printer3);		xmlNodePtr port3 = xmlNewNode(NULL, BAD_CAST "Port");	xmlNodePtr port3_content = xmlNewText(BAD_CAST"789");	xmlAddChild(printer3,port3);	xmlAddChild(port3,port3_content);	xmlNewProp(port3,BAD_CAST"name",BAD_CAST "Port3");		int nRel = xmlSaveFormatFileEnc("XPathConfig.xml",doc,"UTF-8",1);	if (nRel != -1)	{		Log::log.info("Save xml file successfully.");	}	else {		Log::log.error("Fail to save xml file.");	}}void XMLParserTestCase::setUp(){	CreateXMLFile();}void XMLParserTestCase::tearDown(){	delete xmlConfig;} void XMLParserTestCase::testOpen(){	try {	 xmlConfig = CXMLConfig::Open("XPathConfig.xml");	}	catch(XMLParserException &e) {		CPPUNIT_FAIL(e.what());	}}void XMLParserTestCase::testGetFieldValueByPath(){	xmlConfig = CXMLConfig::Open("XPathConfig.xml");	string port1 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer1/Port");	string port2 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer2/Port");	CPPUNIT_ASSERT(port1 == "123");	CPPUNIT_ASSERT(port2 == "456");}void XMLParserTestCase::testSave(){	xmlConfig = CXMLConfig::Open("XPathConfig.xml");		xmlConfig->SetFieldValueByPath("789","/root/Printers/Printer1/Port");	xmlConfig->SetFieldValueByPath("012","/root/Printers/Printer2/Port");		xmlConfig->Save();	string port1 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer1/Port");	string port2 = xmlConfig->GetFieldValueByPath("/root/Printers/Printer2/Port");	CPPUNIT_ASSERT(port1 == "789");	CPPUNIT_ASSERT(port2 == "012");}void XMLParserTestCase::testRemove(){	xmlConfig = CXMLConfig::Open("XPathConfig.xml");		if(!xmlConfig->Remove("/root/Printers/Printer3"))	{		CPPUNIT_FAIL("Fail to remove node.");	}		try{		xmlConfig->GetFieldValueByPath("/root/Printers/Printer3");		CPPUNIT_FAIL("Should throw XMLParserException.");	}	catch(XMLParserException &e) {	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -