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; }
相关文章推荐
- malloc、calloc、realloc的区别
- c++中的引用和指针
- PHP怎么与C语言通信
- 【LeetCode从零单刷】House Robber
- 求排列的逆序数<归并><C++>
- C/C++高阶语法:函数指针及其应用
- 遇见gtest--事件
- C/C++中的内存补齐机制(2)
- C++学习——构造函数初始化列表
- iOS 开发 c语言阶段考试题
- C++实现单链表逆置
- C++学习——copy构造函数及浅拷贝和深拷贝
- c++ string类详解
- 爬爬爬之路:OC语言(六) Block语法简介
- 将字符串中的空格替换为%20
- 简单的二叉树创建及其基本的运算(C语言)
- Lake Counting 算法 第四集
- 使用libxml读取分析配置文件
- VC C/C++ 函数调用约定
- Effective C++(四)