xercesc编码示例Word下载.docx
《xercesc编码示例Word下载.docx》由会员分享,可在线阅读,更多相关《xercesc编码示例Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
classXercesParserXml{
public:
boolhas(conststd:
:
string&
srcByte,conststd:
node)const;
std:
stringget(conststd:
boolset(std:
node,conststd:
value);
booldel(std:
node);
private:
};
#endif
XercesParserXml.cpp
#include"
XercesParserXml.h"
xercesc/parsers/XercesDOMParser.hpp>
xercesc/dom/DOM.hpp>
xercesc/sax/HandlerBase.hpp>
xercesc/util/XMLString.hpp>
xercesc/util/PlatformUtils.hpp>
xercesc/framework/MemBufInputSource.hpp>
#ifdefined(XERCES_NEW_IOSTREAMS)
iostream>
#else
iostream.h>
vector>
XERCES_CPP_NAMESPACE_USE
DOMNode*getNode(DOMNode*node,constchar*nodeName){
//char*ptr=(char*)nodeName;
charptr[4096]={0};
sprintf(ptr,"
%s"
nodeName);
if(NULL==ptr)
returnNULL;
char*d="
."
;
char*p=NULL;
p=strtok(ptr,d);
vector<
vec;
while(p){
//printf("
name:
%s\n"
p);
vec.push_back(p);
p=strtok(NULL,d);
}
DOMNode*child;
DOMNode*curNode=node;
for(unsignedinti=1;
i<
vec.size();
i++){
//std:
cout<
<
vec[i]<
std:
endl;
if(0==curNode){
for(child=curNode->
getFirstChild();
child!
=0;
child=child->
getNextSibling()){//havenochild?
?
char*name=XMLString:
transcode(child->
getNodeName());
if(vec[i]==name){
vec[%d]:
%s\tname:
i,vec[i].c_str(),name);
XMLString:
release(&
name);
curNode=child;
break;
if(child==curNode->
getLastChild()){
"
suchnodeisn'
texist"
<
returncurNode;
classXStr
{
public:
//-----------------------------------------------------------------------
//ConstructorsandDestructor
XStr(constchar*consttoTranscode)
//Calltheprivatetranscodingmethod
fUnicodeForm=XMLString:
transcode(toTranscode);
~XStr()
fUnicodeForm);
//Gettermethods
constXMLCh*unicodeForm()const
returnfUnicodeForm;
private:
//Privatedatamembers
//
//fUnicodeForm
//ThisistheUnicodeXMLChformatofthestring.
XMLCh*fUnicodeForm;
#defineX(str)XStr(str).unicodeForm()
boolXercesParserXml:
has(conststd:
srcBytes,conststd:
node)const
//init
try{
XMLPlatformUtils:
Initialize();
catch(constXMLException&
toCatch){
char*message=XMLString:
transcode(toCatch.getMessage());
Errorduringinitialization!
:
\n"
message<
message);
returnfalse;
//1.loadtherightxmlbytesfromsignaltree
XercesDOMParser*parser=newXercesDOMParser();
if(NULL==parser){
parser->
setValidationScheme(XercesDOMParser:
Val_Always);
setDoNamespaces(true);
//optional
ErrorHandler*errHandler=(ErrorHandler*)newHandlerBase();
setErrorHandler(errHandler);
InputSource*pInputSource=newMemBufInputSource((XMLByte*)srcBytes.c_str(),srcBytes.size(),X("
GUID"
));
if(NULL==pInputSource){
deleteparser;
deleteerrHandler;
//2.parserthexmlbytestoaDOMtree
parse(*pInputSource);
DOMDocument*doc=parser->
getDocument();