您的位置:首页 > 编程语言 > C语言/C++

xerces C/C++ 读取XML文件

2015-11-02 21:27 211 查看
#include <xercesc/dom/DOM.hpp>
#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMDocumentType.hpp>
#include <xercesc/dom/DOMElement.hpp>
#include <xercesc/dom/DOMImplementation.hpp>
#include <xercesc/dom/DOMImplementationLS.hpp>
#include <xercesc/dom/DOMNodeIterator.hpp>
#include <xercesc/dom/DOMNodeList.hpp>
#include <xercesc/dom/DOMText.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <iostream>

#pragma comment( lib,"xerces-c_3D.lib")
using namespace std;

//using namespace xercesc_3_1;
using namespace xercesc;
int main()
{
try
{
XMLPlatformUtils::Initialize();
XercesDOMParser myParser;
//XercesDOMParser* myParser = new XercesDOMParser();
myParser.setValidationScheme( XercesDOMParser::Val_Always);
myParser.setDoNamespaces( false );
myParser.setDoSchema( false );
myParser.setLoadExternalDTD( false );
myParser.parse( "..\\sample.xml" );

xercesc_3_1::DOMDocument *m_pXMLParseDoc = myParser.getDocument();

DOMElement* elementRoot = m_pXMLParseDoc->getDocumentElement();
if( elementRoot == NULL )
{
//XMLPlatformUtils::Terminate();
cout << "空文档或文档格式错误!" << endl;
return 0;
}
//nodeProxy.printNodeContent( elementRoot->getNodeName() );
cout<<endl;

DOMNodeList* children = elementRoot->getChildNodes();
XMLSize_t nodeCount = children->getLength();

for( XMLSize_t xx = 0; xx < nodeCount; xx++ )
{
DOMNode* currentNode = children->item(xx);
if( currentNode->getNodeType() && currentNode->getNodeType()==DOMNode::ELEMENT_NODE )
{
DOMElement* currentElement =(DOMElement*)(currentNode);
char* strValue = XMLString::transcode(currentElement->getTagName());
cout<<strValue<<endl;
if(strValue)
XMLString::release(&strValue);
cout<<endl;
}
}
cout<<"\n解析完毕"<<endl;
//delete myParser;
//XMLPlatformUtils::Terminate();//先delete myParser在调用Terminate()否则会报错
}
catch( const DOMException & toCatch )
{

XMLPlatformUtils::Terminate();
return -1;
}
catch( ... )
{
XMLPlatformUtils::Terminate();
return -1;
}
XMLPlatformUtils::Terminate();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: