博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习:使用StAX写XML - 绘制中国国旗的SVG文件
阅读量:6248 次
发布时间:2019-06-22

本文共 4150 字,大约阅读时间需要 13 分钟。

hot3.png

本文是我在学习《Java核心技术》第九版卷II(高级特性)时写的一段代码。原书作者为(美)Cay S. Horstmann,Gary Cornell,译者为陈昊鹏、王浩、姚建平等。我的Java版本为1.8


之前写过一个Blog,使用DOM写XML绘制中国国旗:

下面代码也可以绘制出一个SVG格式的中华人民共和国国旗,但使用的是StAX。

SVG文件参考了维基百科上的中国国旗SVG文件。

(https://zh.wikipedia.org/wiki/中华人民共和国国旗#/media/File:Flag_of_the_People's_Republic_of_China.svg)

Java代码如下:

package XmlGenerateTest;import java.io.File;import java.io.IOException;import java.io.OutputStream;import java.nio.file.Files;import javax.xml.stream.XMLOutputFactory;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamWriter;/** * 使用StAX绘制中国国旗的SVG文件 * @author Tsybius2014 * @date 2015年12月13日 * @time 下午7:27:11 * @remark * */class XmlGenerateTest {    /**     * 使用StAX绘制中国国旗的SVG文件     *      * @param args     */    public static void main(String[] args) {        try {            File file = new File("C:\\Users\\Tsybius\\Desktop\\FlagOfPRC.svg");            OutputStream out = Files.newOutputStream(file.toPath());            XMLOutputFactory factory = XMLOutputFactory.newInstance();            XMLStreamWriter writer = factory.createXMLStreamWriter(out);            writer.writeStartDocument();            writer.writeStartElement("svg");            writer.writeAttribute("xmlns", "http://www.w3.org/2000/svg"); // svg            writer.writeAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); // svg            writer.writeAttribute("width", "900"); // svg            writer.writeAttribute("height", "600"); // svg            writer.writeAttribute("viewBox", "0 0 30 20"); // svg            writer.writeStartElement("defs");            writer.writeStartElement("path");            writer.writeAttribute("id", "s"); // path            writer.writeAttribute("d",                "M0,-1 0.587785,0.809017 -0.951057,-0.309017H0.951057L-0.587785,0.809017z");            writer.writeAttribute("fill", "#ffde00"); // path            writer.writeEndElement(); // End of path            writer.writeEndElement(); // End of defs            writer.writeStartElement("rect");            writer.writeAttribute("width", "30"); // rect            writer.writeAttribute("height", "20"); // rect            writer.writeAttribute("fill", "#de2910"); // rect            writer.writeEndElement(); // End of rect            writer.writeStartElement("use");            writer.writeAttribute("xlink:href", "#s"); // use1            writer.writeAttribute("transform", "translate(5,5) scale(3)"); // use1            writer.writeEndElement(); // End of use1            writer.writeStartElement("use");            writer.writeAttribute("xlink:href", "#s"); // use2            writer.writeAttribute("transform",                "translate(10,2) rotate(23.036243)"); // use2            writer.writeEndElement(); // End of use2            writer.writeStartElement("use");            writer.writeAttribute("xlink:href", "#s"); // use3            writer.writeAttribute("transform",                "translate(12,4) rotate(45.869898)"); // use3            writer.writeEndElement(); // End of use3            writer.writeStartElement("use");            writer.writeAttribute("xlink:href", "#s"); // use4            writer.writeAttribute("transform",                "translate(12,7) rotate(69.945396)"); // use4            writer.writeEndElement(); // End of use4            writer.writeStartElement("use");            writer.writeAttribute("xlink:href", "#s"); // use5            writer.writeAttribute("transform",                "translate(10,9) rotate(20.659808)"); // use5            writer.writeEndElement(); // End of use5            writer.writeEndElement(); // End of svg            writer.writeEndDocument();            writer.close();            out.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (XMLStreamException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        System.out.println("END");    }}

生成的SVG文件FlagOfPRC.svg,经格式化后如下:

(注:XML在线格式化可使用此工具:   )

使用Firefox打开此文件效果如下:

205258_IK35_1425762.png

END

转载于:https://my.oschina.net/Tsybius2014/blog/543538

你可能感兴趣的文章
基础才是重中之重~理解内存中的栈和堆
查看>>
js错误问题 The operation is insecure.
查看>>
第四章 表达式
查看>>
Python数值计算:一 使用Pylab绘图(3)
查看>>
python爬虫知识点总结(十八)Scrapy框架基本使用
查看>>
限制textarea的字数(包括复制粘贴)
查看>>
ArcGIS Server中的各种服务
查看>>
HIVE: Transform应用实例
查看>>
Some examples about how to write anonymous method and lambda expression
查看>>
linux下可以禁用的一些服务
查看>>
aria2的下载配置
查看>>
C++扬帆远航——14(求两个数的最大公约数)
查看>>
django-blog-zinna搭建个人blog
查看>>
as3 文本竖排效果实现
查看>>
Window下Eclipse+Tomcat远程调试
查看>>
夜间模式的开启与关闭,父模板的制作
查看>>
2016/4/19
查看>>
计算一元二次方程的根
查看>>
队列和栈
查看>>
升级了U3D引擎一下,苦逼了...
查看>>