CommonC++ parse local xml file

利用ANTLR生成C++描述的分析程序 摘要ANTLR(ANother Tool for Language Recognition)是一种基于LL(k)文法的语法分析程序(以下简称分析器)生成工具。其生成的分析器默认使用Java描述,而不是更高效的C++。本文介绍了在Windows平台下,借助VC6.0进行组织工程,使用ANTLR生成C++描述的分析器的方法,并给出了一个实例。最后,本文对ANTLR本身做出了一点小小的改进。关键字ANT 阅读详情
Common C++的demo中有一个parse xml 文件的例子,但是这个例子在windows平台下,读取本地文件时候总是显示 xml 文件格式错误,这是因为这个例子中使用的类是从URLStream类和XMLStream类派生出来的,因此不适合读取本地文件。我们可以从stl 中的ifstream类和XMLStream类来编写一个分析本地xml文件的例子。具体的代码如下#include <cc++/common.h>
#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;
using namespace ost;

class myXMLParser : public ifstream, public XMLStream
{
private:
bool out;
int read(unsigned char *buffer, size_t len)
{
ifstream::read((char *)buffer, len);
len = gcount();
return len;
}

void characters(const unsigned char *text, size_t len)
{
if(out){
cout <<text;
}
}
void startElement(const unsigned char *name, const unsigned char **attr)
{
if( strcmp((const char*)name, "CITY") == 0){
out = true;
}
else{
out = false;
}
}

void endElement(const unsigned char *name)
{
out =false;
}
public:
void Close(void)
{
ifstream::close();
}
myXMLParser(char* path): ifstream(path){
out =false;
}
};

int main(int argc, char **argv)
{
URLStream::Error status;

// url.setProxy("home.sys", 8000);
try
{
while(--argc)
{
++argv;
cout << "fetching " << *argv << endl;
myXMLParser xml(*argv);
/*
status = xml.get(*argv);
if(status)
{
cout << "failed; reason=" << status << endl;
xml.Close();
continue;
}
*/
cout << "Parsing..." << endl;
if(!xml.parse())
cout << "not well formed..." << endl;
xml.Close();
cout << ends;
}
}
catch(...)
{
cerr << "url " << *argv << " failed" << endl;
}
}
 
Android17车载音频进阶之H2XML定制Module(一百七十七) 目的:理解H2XML如何把Module接口和Key定义转换为ARC可用的元数据,并通过Graph、GKV、CKV和TKV驱动AudioReach用例配置。H2XML根据带注解的C头文件生成XML元数据。ARC使用这些元数据配置Module、Graph和参数,ACDB保存对应的Graph定义与Calibration数据,运行时由GSL和AML按Key Vector查询数据。H2XML负责生成配置所需的元数据,不负责执行CAPI Module中的算法。fill:#333;important; 阅读详情

相关推荐

ADS2016子电路封装避坑指南:手把手教你制作可复用的自定义Symbol

本文详细介绍了在ADS2016中制作可复用的自定义Symbol的全流程,重点解析了子电路封装的常见问题与解决方案。从电路模块的标准化处理、Hierarchy创建技巧到Symbol视觉优化和库管理策略,帮助工程师提升射频与微波电路设计效率。特别针对Symbol比例适配和引脚优化等核心问题,提供了实用的避坑指南和工程验证方法。

weixin_30275415的博客 212

windows下使用qt编程的一些问题

我下载了windows下qt的几个版本:qt-win-free-3.3.1,qt-win-free-msvc-3.3.1还有一个qt3.0.5msvc的eval版。那个eval的版本expired了,但是只有这个版本向vc的addin目录中添加了插件,其他的版本都没有.而且只有这个版本的带有assitant和designer,其它队版本都是没有gui工具的.安装qt之后好像必须先运行一下b

2813

【2023版】基于JT808/JT1078协议的车载视频监控平台开发实战-开源架构解析

本文详细解析了基于JT808/JT1078协议的车载视频监控平台开发实战,涵盖协议核心作用、开源架构设计、开发避坑指南及二次开发建议。重点介绍了JT1078协议在音视频传输中的优化方案,以及海量位置数据存储、高可用架构等关键技术点,为开发者提供全面的实战参考。

weixin_26965807的博客 236

自定义类型文件在vc中的语法高亮

 如果您希望高亮自定义的关键字,可以在vc的安装目录,例如:E:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin下新建一个文件,名为usertype.dat,在该文件中添加您的自定义关键字,一字一行。重启vc后,您就可以发现这些自定义的关键字已经可以高亮。如果您希望自定义的关键字和c/c++中定义的关键字相区别,可以在too

2216

水下探测小白必看:单波束vs多波束声呐,5分钟搞懂核心区别

本文为水下探测新手清晰解析了单波束与多波束声呐的核心区别。单波束声呐如同精准的“手电筒”,进行逐点扫描,适用于定点测深和目标探测;而多波束声呐则像“聚光灯”,能一次性覆盖一个扇区,高效获取海底地形三维信息,是海底测绘和水下三维建模的理想选择。文章通过生动的比喻和对比表格,帮助读者快速理解两者原理、效率差异及适用场景。

linux6sysadmin的博客 1046

C语言新手必练:10个实战小项目带你快速上手(附完整代码)

本文为C语言初学者精选10个实战项目,从基础的温度转换器到高级的迷宫求解算法,涵盖输入输出、条件判断、循环控制、数组操作等核心知识点。每个项目配有完整代码和详细解析,帮助新手通过实践掌握编程思维,特别适合刚学完语法但缺乏实战经验的学习者。

weixin_29208077的博客 741

一个可以自动更新依赖关系的makefile

一般编译器都可以产生cpp文件和头文件之间的依赖关系,对于gcc可以使用如下的命令:    gcc -MM sourcefile.cpp产生的结果可能如下:    sourcefile.o: sourcefile.cpp header1.h header2.h利用这个功能,我们就可以编写一个可以自动更新依赖关系的makefile,具体如下:文件AutoMakeCore:# this file is

1963

Klipper-源码模块

Klippy上位机程序采用多线程架构,包含四个主要进程:主线程处理G代码命令、串口IO线程(C语言实现)、MCU响应处理线程(Python实现)和独立日志线程。代码结构分为三大模块:chelper(C语言辅助函数)、extras(扩展功能如温度控制)和kinematics(运动学模型实现)。核心功能模块包括串口通信(serialhdl.py)、步进电机控制(stepper.py)、运动学计算等,其中C语言实现的底层模块通过serialqueue.c处理高效IO。扩展模块支持热床、传感器等外设,运动学子模块提

weixin_44258581的博客 991

修改antlr错误信息输出格式的方法

找到/antlr/DefaultFileLineFormatter.java,修改类DefaultFileLineFormatter的函数getFormatString().我将其修改如下,以适应vc的错误信息输出格式:package antlr;/* ANTLR Translator Generator?* Project led by Terence Parr at http://ww

1588

【科研】Michaelis–Menten 曲线(米氏曲线)中反应速率的计算

Michaelis–Menten 曲线 米氏曲线 纵坐标 反应速率求值 朗伯比尔定律

weixin_42809675的博客 2万+

ubuntu22.04下对使用linuxdeployqt发布的qt程序进行deb打包操作

【代码】ubuntu22.04下对使用linuxdeployqt发布的qt程序进行deb打包操作。

十三阿哥的博客 1402

为多个类分配ID——Loki库的Typelist的一个小应用

    假设你有若干个类,现在你希望给每个类分配一个唯一的ID。最简单的方法无非是手工的为这个类添加一个id,前提是你确信给这个类的id与其它类的id没有冲突,为此你需要查看其它所有类的代码。    稍微好一点的办法是使用GUID产生器产生的GUID,这样就可以保证每个类的id都是唯一的了。但是GUID128位的长度似乎又有一些浪费。    其实还有这样的一个思路:我们到一个地方将这些类进行注册,

1263

Windows 下 Hermes Agent(爱马仕)安装全记录:从零到一的保姆级图文教程

本文主要介绍了Windows 下 Hermes Agent(爱马仕) 安装全记录:从零到一的保姆级图文教程,希望能对学习使用 Hermes Agent 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装WSL环境 2.2 步骤二 安装Python环境 2.3 步骤三 安装Hermes Agent 2.4 步骤四 修正 API Key 错误 2.5 步骤五 配置多个模型 2.6 步骤六 启动Hermes Agent 3. 常见问题及解决方案 4. 总结

weixin_43178406的博客 14万+

一个c++单元测试的小想法

???????? 在python中,每个模块都有一段自测试的代码,虽然不是强制的,但是推荐这样,我觉得这样很好???????? 这样每个模块都附带一个(或者多个)用例,方便别人验证???????? 而且我想:这样的技术在C++也是比较容易实现的!???????? //*.h file ???????? class declarations...???????? //*.cpp file

1191

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

修改默认windows调试器的方法

        修改注册表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/AeDebug下面的Debugger键的值,和键PreVisualStudio7Debugger的值一样就可以了

1025

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

c++中singleton模式的一种实现方法

#includeclass test{ static test* pInstance; protected:public: test() {  if(!pInstance){      pInstance = 0;  }  printf("test init/n"); } void* operator new(unsigned int size) {  if (!pInstance){   pIn

1013

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

将列表形式的数据转换成为表格形式的小工具

这个工具名叫list2table,可以将如下的数据转换成为一个表格key=1value1=1key=2value2=2转换的表格形式如下:+===+======+======+|key|value1|value2|+===+======+======+|1  |1     |      ||2  |      |2     |+===+======+======+该工具拥有很多选项

949

基于策略的设计 vs 多继承

基于策略的设计是对多继承的超越。基于策略的设计(Policy Based Design)包含两个重要的部分:策略类(Policy-Classes)和一个具有极大张力的核心。许 多人在看基于策略的设计的时候,往往注意到了前者(策略类),注意到了正交分析的思想,却忽视了后者(核心)。这是因为策略类的思想较为容易接收,而且已 经存在很多类似的概念。于是乎很多人认为基于策略的设计是作者在炒

889

CommonC++应用:写个计时器

Windows的API中有一个SetTimer可以用来帮助我们编写有关计时的程序。但是这个API有一个非常不合理的地方就是一定需要一个窗口的句柄。如果我们要开发一个没有GUI界面的程序,例如后台服务程序,那么就不能使用这个API。如果要自己实现这种定时的功能,就需要开辟一个新的线程,每过一段时间就检测一次,看看是否到了开始的时候设置的时间间隔。如果是,则调用一个用户函数。在CommonC+

836

C++中,不同类的实例的序列化问题

        假设编写一个图形编程程序,所有的图形类都有共同的父类Graphics。Graphics类中提供了进行序列化的接口Serialize()。        现在当用户使用该图形编辑器创建了多个图形对象(即创建了多个Graphics的子类的实例,这些实例可以通过一个chain of responsibility连接起来),并希望将该图形保存到一个文件里面。我们需要遍历该职责链,依次调用每

498

OPC UA 地址空间导入实践|XML 与 CSV 两条路径

部署OPC UA服务器时,核心瓶颈在于数据注入——地址空间结构设计与时间序列模拟。XML定义节点结构,需注意命名空间索引(应基于URI而非运行编号)及父子关系双向声明,改动后必须重启生效;CSV注入时序,按SourceTimestamp分组批量写入,建议使用nsu=URI;s=名称格式避免索引错位。推荐使用Prosys仿真服务器,结合UaModeler建模,实现高效、稳定的仿真部署。

MotroEngineer的博客 258

JS XML验证及格式化处理

该代码提供XML验证、格式化及转换功能:isValidXML通过jQuery解析判断字符串是否为合法XML;formatXML对XML进行缩进美化,支持标签、文本、CDATA和注释;xmlToString将XML文档对象转为字符串;escapeHtml用于HTML转义。整体实现简洁,适用于前端XML处理场景。

程序就是世界 163

Spring 框架AOP与 XML 基础

本文涵盖AOP配置文件方式与注解方式、JDBC模板技术、模拟转账开发、XML语法与约束、DOM4J与XPath等内容,并附核心易错点速查表。

既然你都点开这里了,那可以给我点个关注吗?可以吗?可以吗? 274

使用lxml操作 Word 的 OpenXML 底层

本文综合介绍了使用lxml操作Word底层OpenXML文档的基础知识,并给出了一个效率远超VBA的提取Word文档中的表格的HTML表结构的实例,演示了用lxml获取及修改部分Word文档组成部件的文本、属性的方法。

yivifu的专栏 406

1,270 Star 的 Rust 笔记应用 Quiet.md:百万字敲键 5ms、零 Electron、存储格式选了飞书 DocxXML

开源笔记应用 Quiet.md(1,270 Star)用 Rust + GPUI(Zed 同款框架)纯 GPU 绘制,无 WebView 无 Electron:百万字文档敲键 P95 仅 5.78ms,安装包 18MB;存储格式选飞书 DocxXML,一篇笔记一个 XML 文件,Git/iCloud 同步友好,默认零联网。本文拆解其性能方法论、存储设计与给桌面应用开发者的选型启示。

话梅糖の优快云 Blog 329
上一篇: Word中高亮程序代码的宏
下一篇: 基于策略的设计 vs 多继承
guocongbin
博客等级 码龄23年 22粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值