使用xerces c 庫編寫XSD校驗XML的類

2021-05-25 05:51:30 字數 1974 閱讀 7574

由於需要寫個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...