由於需要寫個xsd來校驗xml功能的類, 上網搜尋了很多資料, 都不能完全滿足需要, 於是在多方參考了網路上的文章後, 自己進一步改進了一下。
直接貼**,備忘。
標頭檔案 ixmlvalidation.h
#ifndef _ixml_validation_h_
#define _ixml_validation_h_
#include
#include
#include
#include
#include
#include
#include
#include
#include
using std::cerr;
using std::endl;
xerces_cpp_namespace_use
class strx
~strx()
const char* localform() const
};class domtreeerrorreporter : public errorhandler
void reseterrors() {}
void error(const saxparseexception& tocatch);
void fatalerror(const saxparseexception& tocatch);
bool geterrflag()
std::string geterrmsg()
private:
std::string m_errmsg;
bool m_errflag;
};class ixmlvalidation
;#endif
**檔案 ixmlvalidation.cpp
#include "ixmlvalidation.h"
#include
#include
#include
#include
#include
std::ostream&
operator<<(std::ostream& target, const strx& todump)
domtreeerrorreporter::domtreeerrorreporter()
domtreeerrorreporter::~domtreeerrorreporter()
void domtreeerrorreporter::error(const saxparseexception& tocatch)
void domtreeerrorreporter::fatalerror(const saxparseexception& tocatch)
ixmlvalidation::ixmlvalidation(std::string& grammar)
:m_grammar(grammar)
catch(const xmlexception& e)
}ixmlvalidation::~ixmlvalidation()
int ixmlvalidation::validation(std::string & xmlstr,std::string &errmsg)
char xml_fname[100];
result = 1;
trycatch ( const outofmemoryexception& )
catch ( const xmlexception& e )
catch ( const domexception& e )
catch (...)
return result;
}使用舉例: main.cpp
#include "ixmlvalidation.h"
#include
#include
#include
using namespace std;
int main()
利用Xerces c庫解析XML
如下是乙個xml檔案 sample.xml 常用xml解析庫 庫1 xerces c 庫2 libxml2 庫3 expat 庫4 tinyxml 庫5 msxml include include include include include include include include inc...
如何使用XSD
xml 文件可對 dtd 或 xml schema 進行引用。請看這個名為 note.xml 的 xml 文件 george john reminder don t forget the meeting 下面這個例子是名為 note.dtd 的 dtd 檔案,它對上面那個 xml 文件的元素進行了定...
如何使用 XSD
請看這個名為 note.xml 的 xml 文件 xml version 1.0 note to george to from john from heading reminder heading body don t forget the meeting body note 下面這個例子是名為 n...