Scheme 的 xml文件读写

起因是想做一个dbc文件转C代码的工具,用于生成汽车内部网络通讯报文收发的代码。dbc文件可以转化为xml文件,起初想用C++写一个xml转C的程序,后来想到lisp在处理文本上有优势,去翻了一下mit-scheme的说明书,果然mit-scheme有自带的xmlparser!

mit-scheme-ref的作者真是你妹的吝啬,连个例子也不给!用的人估计也不多,网上找不到相关的例子。scheme本来就小众,mit-scheme更小众,那么用mit-scheme的xmlparser的恐怕就小小众了。我把自己的实践经验记录下来,以便自己温习,也便于后来人学习。

我曾经研究过java的fileIO,android的fileIO,还有androidxml文件的IO,这回是scheme的xmlIO。

曾经写的相关博文如下:

android XML文件读写

Android的文件操作

scheme中文件IO有port的概念,用起来类似于流的概念,与java和android中的filestream类似,估计是硬件实现在原理上是相通的。

这里以lisa的记录文件m.xml为例,

<?xml version="1.0" encoding="UTF-8" standalone="true"?>

<TaskList>
	<Task id="1">
		<content>大陆电机电枢电流脉动</content>
	</Task>
	<Task id="2">
		<content>123</content>
	</Task>
	<Task id="3">
		<content/>
	</Task>
	<Task id="4">
		<content/>
	</Task>
	<Task id="5">
		<content/>
	</Task>
</TaskList>

首先要加载xml parser的函数库

(load-option 'xml)

然后加载需要解析的文件,这也是scheme parser程序的入口

(read-xml-file "m.xml")

返回一个record,like this

#[xml-document 48]

record是一种structure,可以理解为结构体,structure有在定义的时候有自己的type,类似于结构体类型,这个record的type是xml-document,代表这个结构体是用来表示整个文档的,里面装载了整个文档的数据。所以这是一个巨型结构体,里面包含了数个小结构体(record)。







版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇