利用Xerces-c库解析XML
来源:互联网 发布:apache 配置加载php 编辑:程序博客网 时间:2024/05/17 06:02
利用Xerces-c库解析XML
如下是一个XML文件:sample.xml<?xml version="1.0" encoding="utf-8"?><常用XML解析库> <库1>Xerces-C</库1> <库2>libxml2</库2> <库3>expat</库3> <库4>tinyxml</库4> <库5>msxml</库5></常用XML解析库>如下是解析此文件的源代码:#include <windows.h>#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 <xercesc/util/XMLUni.hpp>#include <iostream>using namespace std;#ifdef _DEBUG#pragma comment( lib, "xerces-c_2d.lib" )#else#pragma comment( lib, "xerces-c_2.lib" )#endifclass CXMLNodeContent{private: char* m_pNodeText; int m_BufferSize; int m_CurBufferSize;public: CXMLNodeContent() { m_pNodeText = NULL; m_BufferSize = 0; m_CurBufferSize = 0; } ~CXMLNodeContent() { if( m_pNodeText != NULL ) { delete []m_pNodeText; m_pNodeText = NULL; } m_BufferSize = 0; m_CurBufferSize = 0; } int printNodeContent( const XMLCh* pText ) { getNodeContent( pText ); if( m_CurBufferSize == 1 ) return 0; else { printf( "%s", m_pNodeText ); return 1; } } int getBufferSize() { return m_CurBufferSize; } char* getNodeContent( const XMLCh* pText ) { if( pText == NULL ) { m_CurBufferSize = 0; return NULL; } int index = 0; m_CurBufferSize = WideCharToMultiByte(CP_ACP, 0 ,pText, -1 , 0 , 0, NULL, NULL); if( pText[0] == 10 ) { while( pText[index] == 10 || pText[index] == 32 && index < m_CurBufferSize ) index++; if( index == m_CurBufferSize ) { m_CurBufferSize = 0; return NULL; } } if( m_CurBufferSize > m_BufferSize ) { if( m_pNodeText == NULL ) { m_pNodeText = new char[m_CurBufferSize]; m_BufferSize = m_CurBufferSize; } else { delete []m_pNodeText; m_pNodeText = new char[m_CurBufferSize]; m_BufferSize = m_CurBufferSize; } } WideCharToMultiByte(CP_ACP, 0 ,pText + index, -1 , m_pNodeText , m_CurBufferSize, NULL, NULL); return m_pNodeText; }};int main(){ CXMLNodeContent nodeProxy; xercesc::XMLPlatformUtils::Initialize(); xercesc::XercesDOMParser* myParser = new xercesc::XercesDOMParser; myParser->setValidationScheme( xercesc::XercesDOMParser::Val_Auto ); myParser->setDoNamespaces( false ); myParser->setDoSchema( false ); myParser->setLoadExternalDTD( false ); myParser->parse( "sample.xml" ); xercesc::DOMDocument* xmlDoc = myParser->getDocument(); xercesc::DOMElement* elementRoot = xmlDoc->getDocumentElement(); if( elementRoot == NULL ) { xercesc::XMLPlatformUtils::Terminate(); cout << "空文档或文档格式错误!" << endl; return 0; } nodeProxy.printNodeContent( elementRoot->getNodeName() ); cout<<endl; xercesc::DOMNodeList* children = elementRoot->getChildNodes(); XMLSize_t nodeCount = children->getLength(); for( XMLSize_t xx = 0; xx < nodeCount; xx++ ) { xercesc::DOMNode* currentNode = children->item(xx); if( currentNode->getNodeType() && currentNode->getNodeType() == xercesc::DOMNode::ELEMENT_NODE ) { xercesc::DOMElement* currentElement = (xercesc::DOMElement*)(currentNode); cout<<"\t"; nodeProxy.printNodeContent( currentElement->getTagName() ); cout<<"\t"; nodeProxy.printNodeContent(currentNode->getTextContent()); cout<<endl; } } cout<<"\n解析完毕"<<endl; xercesc::XMLPlatformUtils::Terminate(); getchar(); return 0;}
- 利用Xerces-c库解析XML
- 利用Xerces-c库解析XML
- xerces-c 解析xml schema
- 利用xerces-c库将xml串转换为类
- 浅谈利用Xerces C++解析XML文档
- 利用Xerces C++解析XML文档
- xerces-c,c++解析xml,解析xml字符串
- xml解析库xerces学习笔记一
- xerces dom xml解析
- Xerces解析XML
- Xerces-C++解析XML
- 利用xerces-c将类数据转为xml串
- Xerces C++解析XML文档
- Xerces C++解析XML文档
- Apache xerces xml解析器
- 如何利用Xerces C++解析包含中文字符的XML文档
- 如何利用Xerces C++解析包含中文字符的XML文档
- 转载:Xerces C++解析XML文档
- java.util.Timer
- 《程序员的第一年》---------- 今天学习了一下aspnetpager分页控件的使用
- android 之用小米手机测试所报异常SoketException(wifi联网)
- Eclipse打JAR包,插件FatJar安装与使用
- Linux下如何修改终端提示符
- 利用Xerces-c库解析XML
- 自定义django的admin后台action
- IO流2
- SQLyog使用介绍
- OV7740的使用1
- Xerces-C++ 参考
- SQL 语句大全
- shell关于参数的处理(转)
- Linux系统日志的组成