java batik_batik详解2

四、解析器模块

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 列表, 就象在

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值