四、解析器模块

SVG有很多没有属性值的微型语法使用,比如SVGTransformable元素中的transform属性,path元素中的

path data d属性等。以前这些属性不能很好的被解析,现在必要时可以通过SVG进程应用程序来使用。

1.解析器,操作者,生产者

在解析模块中,每个微语法通过一对类来支持---解析器和操作者。解析器是一个用来执行解析接口

(用来从一个reader或者一个String中来解析值的接口)的类。操作者是微型语法的一个特殊接口,这

个接口当相应元素的输入被解析后将调用接口中的相应的方法。在这些操作者接口中多种方法和适应类被提供。

解析器还包含一个错误操作,当输入解析错误时,错误操作的错误方法将被调用。如果错误处理没有跟

解析器关联,那么当发生异常时将抛出ParseException。

解析模块支持的微语法如下:

Angles

Fragment identifiers

一些微型语法同样也有一个相应的生产者类,这个类是在解析的同时生成对象的一个处理接口的执行。

2.举例

下面例子用来举例怎么用一个解析器来解析一个点列表

import java.awt.geom.Point2D;

import java.util.LinkedList;

import java.util.List;

import org.apache.batik.parser.DefaultPointsHandler;

import org.apache.batik.parser.ParseException;

import org.apache.batik.parser.PointsHandler;

import org.apache.batik.parser.PointsParser;

public class PointsParserExample {

public List extractPoints(String s) throws ParseException {

final LinkedList points = new LinkedList();

PointsParser pp = new PointsParser();

PointsHandler ph = new DefaultPointsHandler() {

public void point(float x, float y) throws ParseException {

Point2D p = new Point2D.Float(x, y);

points.add(p);

}

};

pp.setPointsHandler(ph);

pp.parse(s);

return points;

}

}

import java.awt.geom.AffineTransform;

import org.apache.batik.parser.AWTTransformProducer;

import org.apache.batik.parser.ParseException;

import org.apache.batik.parser.TransformListParser;

public class TransformParserExample {

public AffineTransform parseTransformList(String s) throws ParseException {

TransformListParser p = new TransformListParser();

AWTTransformProducer tp = new AWTTransformProducer();

p.setTransformListHandler(tp);

p.parse(s);

return tp.getAffineTransform();

}

}

Clock values

这个解析器被用来解析Fragment identifiers(片断定义)的svg允许的各种格式。

Lengths

解析SVG长度值

Length lists

用来解析逗号或者空格分隔的SVG长度列表。

Numbers

用于解析SVG数字值.

Number lists

用来解析逗号或者空格分隔的SVG数字值.

Path data

通过 PathParser执行, 通过PathHandler处理. 用来解析 SVG path data, 就象path元素中的d属性一样.

Points

通过 PointsParser执行, 通过PointsHandler处理. 用来解析 point 列表, 就象polygon元素中的points属性那样.

Preserve aspect ratio values (保持屏幕比率值)

Transform lists

通过TransformListParser执行, 通过TransformListHandler处理. 用来解析transform 列表, 就象在

任意可以变换元素中的变换属性那样。

java batik_batik详解2相关推荐

  1. java batik_Batik详解.pdf

    Batik详解 Batik 详解 一.概述 Batik 是为想使用 svg 格式图片来实现各种功能的应用程序和 Applet 提供的一个基 java 的工具包. 工程创建的目的是为开发者提供一系列可以 ...

  2. Apache Thrift - java开发详解

    2019独角兽企业重金招聘Python工程师标准>>> Apache Thrift - java开发详解 博客分类: java 架构 中间件 1.添加依赖 jar <depen ...

  3. Java泛型详解-史上讲解最详细的,没有之一

    目录 1. 概述 2. 一个栗子 3. 特性 4. 泛型的使用 4.1 泛型类 4.2 泛型接口 4.3 泛型通配符 4.4 泛型方法 4.4.1 泛型方法的基本用法 4.4.2 类中的泛型方法 4. ...

  4. Java虚拟机详解----JVM常见问题总结

    [正文] 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类.那篇文章和本文是面试时的重点. 面试必问关键词:JVM垃圾 ...

  5. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

  6. 最详细的java泛型详解

    来源:最详细的java泛型详解 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. ja ...

  7. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

  8. Java基础——Java NIO详解(一)

    一.基本概念 1.I/0简介 I/O即输入输出,是计算机与外界世界的一个借口.IO操作的实际主题是操作系统.在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过str ...

  9. Java基础——Java NIO详解(二)

    一.简介 在我的上一篇文章Java NIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO). 二.异步IO 异步 I/O 是一种没有阻塞地读写数据的方法 ...

  10. Java基础——Java IO详解

    一.概述 1.Java IO Java IO即Java 输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要 ...

最新文章

  1. 104.二叉树的最大深度
  2. shrio初体验(2)Realm
  3. springboot 自动配置
  4. 【OpenPose-Windows】运行OpenposeDemo.exe 如何保存图像运行结果及关节点信息
  5. cocos2d-js 热更新具体解释(一)
  6. 收集分享有用的注册表项
  7. Flume的开发之 自定义 source 自定义 sink 自定义拦截器
  8. 知道吗?9个搜索引擎优化(SEO)最佳实践
  9. java awt jar_【Java学习笔记】操作JAR文件
  10. 凭证反过账 金蝶k3_金蝶软件k3凭证反过账
  11. Excel数据透视表经典教程三《数据透视表背后原理》
  12. i.MX283A移植mt7601--小米随身wifi
  13. 利用U盘引导进入pe系统修复操作系统
  14. 前言:电商产品经理必修课-如何打造实战型商品系统
  15. 200万年薪请不到!清华姚班到底有多牛X?
  16. 学生学籍管理系统 2019 版
  17. Windows 11 L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误
  18. 如何根据pom文件创建自己的本地仓库
  19. AMD Software Adrenalin Edition 23.5.1驱动发布,快速获取驱动
  20. 简单的股票行情演示(一) - 实时标的数据

热门文章

  1. c语言自动计费工作,c语言编程实现话单计费实例
  2. 推荐一款MD神器吧:重度MD用户必备神器
  3. 热议:为什么近些年硕士生考博意愿偏低?
  4. Linux必会100个命令(八)ps、top、netstat
  5. 3DMAX 捕捉功能
  6. securecrt登录linux下载文件,Linux使用SecureCRT上传和下载文件教程
  7. 21款数据恢复软件,包含电脑PC、手机安卓、与苹果IOS免费下载
  8. python 指定时间运行代码
  9. 在线教学质量评价系统java web_基于JavaWeb的教师教学质量评价系统
  10. 联想教学用计算机,联想多媒体电子教室解决方案