Tôi đang tìm kiếm một hướng dẫn để tải một tệp XML, đọc nó, thay đổi nó và cuối cùng lưu nó với C++. Tôi đang sử dụng Linux Ubuntu và đã cố gắng sử dụng Xerces. Với Google và nhiều thời gian, tôi chỉ có thể tải một Tệp XML:Xerces C++ - Tải, đọc và lưu, lựa chọn thay thế?
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <iostream>
using namespace std;
using namespace xercesc;
int main (int argc, char* args[]) {
try {
XMLPlatformUtils::Initialize();
}
catch (const XMLException& toCatch) {
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Error during initialization! :\n"
<< message << "\n";
XMLString::release(&message);
return 1;
}
XercesDOMParser* parser = new XercesDOMParser();
parser->setValidationScheme(XercesDOMParser::Val_Always);
parser->setDoNamespaces(true); // optional
ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
parser->setErrorHandler(errHandler);
const char* xmlFile = "demo.xml";
try {
parser->parse(xmlFile);
}
catch (const XMLException& toCatch) {
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
return -1;
}
catch (const DOMException& toCatch) {
char* message = XMLString::transcode(toCatch.msg);
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
return -1;
}
catch (...) {
cout << "Unexpected Exception \n" ;
return -1;
}
DOMNode* docRootNode;
// DOMNode* aNode;
DOMDocument* doc;
doc = parser->getDocument();
docRootNode = doc->getDocumentElement();
cout << docRootNode->getAttributes() << endl; //returns Hex
delete parser;
delete errHandler;
return 0;
}
Làm cách nào để có thể đọc thao tác tệp XML và lưu cuối cùng? Có thư viện thay thế nào không? (Tôi đã thử tinyxml nhưng các tệp trả về lỗi, khi tôi muốn biên dịch nó)
Tôi hy vọng bạn sử dụng Xerces mới 3. * 2.7/2.8 cũ đang bị rò rỉ bộ nhớ khắp nơi –