Xerces C SAX解析XML文件

2021-06-05 18:15:29 字數 1805 閱讀 8791

關於sax的解釋,和好處,不做過多的介紹,你完全可以搜尋引擎裡面找到茫茫多的介紹

本文的主要目的是介紹如何在自己的c++程式中利用xerces c++ sax解析xml文件;

2、在工程中引入xerces c++

1、c/c++ 常規中:附件包含目錄:引入include ;標頭檔案

3、ok以上環境搭建好後,開始編碼吧

#include #include #include #include #include #include #include "mysax2handler.h"

using namespace std;

using namespace xercesc_3_1;

int main (int argc, char* args)

catch (const xmlexception& tocatch)

char* xmlfile = "x1.xml";

sax2xmlreader* parser = xmlreade***ctory::createxmlreader();

parser->setfeature(xmluni::fgsax2corevalidation, true);

parser->setfeature(xmluni::fgsax2corenamespaces, true); // optional

parser->setfeature(xmluni::fgxercesdynamic, false);

parser->setfeature(xmluni::fgxercesschema, true);

parser->setfeature(xmluni::fgxercesschemafullchecking, true);

mysax2handler* defaulthandler = new mysax2handler();

parser->setcontenthandler(defaulthandler);

parser->seterrorhandler(defaulthandler);

parser->setentityresolver(defaulthandler);

try

catch (const xmlexception& tocatch)

catch (const saxparseexception& tocatch)

catch (...)

defaulthandler->outputpslist();

delete parser;

delete defaulthandler;

xmlplatformutils::terminate();

system("pause");

return 0;

}

main()函式的宣告:其中包括sax解析器的宣告。

4、需要自己實現自己的介面:

#pragma once

#include#include #include "pathsynopsisnode.h"

using namespace std;

using namespace xercesc_3_1;

class mysax2handler :public defaulthandler

;

5、對於sax解析xml資料中存在中文的情況,sax會直接進入到 fatalerror事件中,導致解析錯誤的問題。

需要我們在xml文件的開頭新增文件編碼方式:<?xml version="1.0" encoding="gb2312" ?>

Xerces C SAX 解析事件總結

virtual void characters const xmlch const chars const xmlsize t length receive notification of character data inside an element.在乙個元素中接收字元資料的通知 virtua...

解析XML檔案(SAX方式解析XML)

解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...

解析XML檔案(SAX方式解析XML)

解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...