如何基于导出的XML开发图形表单/模板独立查看器
EMIS XML模板独立查看器实现方案
1. XML结构解析
你导出的是符合EMIS Open标准的XML模板,对应命名空间为http://www.e-mis.com/emisopen,可直接用通用XML解析库完成节点提取,核心节点对应关系如下:
- 根节点下的
<templateName>、<creationTime>、<author>为模板基础元信息,直接提取展示即可 <definition>标签下的<page>对应模板页面层级,嵌套<page>为子页面,<title>为页面标题<panel>对应页面内的分组容器,支持嵌套,用于划分不同内容区块<component>为最小展示单元,根据子节点类型区分组件形态:- 带
<hyperlink>子节点的为超链接组件,提取label和<URL>字段渲染为可点击链接 - 带
<textDisplay>子节点的为富文本组件,内部<text>存储的是RTF格式内容,需转换后渲染
- 带
2. RTF富文本内容转换
示例中富文本组件的内容为RTF格式,自带字体、颜色、加粗等样式定义,无需手动解析格式规则,直接用成熟的第三方库转换即可:
- 后端开发可使用Python的
pyth、rtf2html,Java的rtfparserkit完成RTF转HTML - 前端开发可使用
rtf.js直接在浏览器侧完成解析渲染
3. 样式对齐原程序
要实现和原程序完全一致的展示效果,对照模板示例截图编写对应CSS规则即可:
- 还原页面、面板的边距、边框、背景色参数
- 组件间距、字体大小、行高和原程序保持一致
- 特殊格式(比如示例中的红色加粗提示文本)直接沿用RTF解析后输出的样式参数即可
4. 可选交互扩展
如果需要更高的还原度,可进一步解析XML中的<promptForDate>、<mandatory>等标记,实现对应的日期选择提示、必填项星标等交互效果。
内容的提问来源于stack exchange,提问作者Brandon Crisp
相关产品推荐
相关产品推荐

