2019独角兽企业重金招聘Python工程师标准>>>

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


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

http://my.oschina.net/Tsybius2014/blog/543026

下面代码也可以绘制出一个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"); // svgwriter.writeAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); // svgwriter.writeAttribute("width", "900"); // svgwriter.writeAttribute("height", "600"); // svgwriter.writeAttribute("viewBox", "0 0 30 20"); // svgwriter.writeStartElement("defs");writer.writeStartElement("path");writer.writeAttribute("id", "s"); // pathwriter.writeAttribute("d","M0,-1 0.587785,0.809017 -0.951057,-0.309017H0.951057L-0.587785,0.809017z");writer.writeAttribute("fill", "#ffde00"); // pathwriter.writeEndElement(); // End of pathwriter.writeEndElement(); // End of defswriter.writeStartElement("rect");writer.writeAttribute("width", "30"); // rectwriter.writeAttribute("height", "20"); // rectwriter.writeAttribute("fill", "#de2910"); // rectwriter.writeEndElement(); // End of rectwriter.writeStartElement("use");writer.writeAttribute("xlink:href", "#s"); // use1writer.writeAttribute("transform", "translate(5,5) scale(3)"); // use1writer.writeEndElement(); // End of use1writer.writeStartElement("use");writer.writeAttribute("xlink:href", "#s"); // use2writer.writeAttribute("transform","translate(10,2) rotate(23.036243)"); // use2writer.writeEndElement(); // End of use2writer.writeStartElement("use");writer.writeAttribute("xlink:href", "#s"); // use3writer.writeAttribute("transform","translate(12,4) rotate(45.869898)"); // use3writer.writeEndElement(); // End of use3writer.writeStartElement("use");writer.writeAttribute("xlink:href", "#s"); // use4writer.writeAttribute("transform","translate(12,7) rotate(69.945396)"); // use4writer.writeEndElement(); // End of use4writer.writeStartElement("use");writer.writeAttribute("xlink:href", "#s"); // use5writer.writeAttribute("transform","translate(10,9) rotate(20.659808)"); // use5writer.writeEndElement(); // End of use5writer.writeEndElement(); // End of svgwriter.writeEndDocument();writer.close();out.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (XMLStreamException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("END");}
}

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

<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="600" viewBox="0 0 30 20"><defs><path id="s" d="M0,-1 0.587785,0.809017 -0.951057,-0.309017H0.951057L-0.587785,0.809017z" fill="#ffde00"/></defs><rect width="30" height="20" fill="#de2910"/><use xlink:href="#s" transform="translate(5,5) scale(3)"/><use xlink:href="#s" transform="translate(10,2) rotate(23.036243)"/><use xlink:href="#s" transform="translate(12,4) rotate(45.869898)"/><use xlink:href="#s" transform="translate(12,7) rotate(69.945396)"/><use xlink:href="#s" transform="translate(10,9) rotate(20.659808)"/>
</svg>

(注:XML在线格式化可使用此工具: http://tool.oschina.net/codeformat/xml  )

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

END

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

Java学习:使用StAX写XML - 绘制中国国旗的SVG文件相关推荐

  1. canvas绘制中国国旗!

    绘制中国国旗 1.题目 今天刚学了H5中的画布canvas元素,课堂上的案例挺有意思,就心血来潮想利用canvas绘制中国国旗: 2.思路 第一步,创建画布元素,在画布内作好辅助线和网格线来确定圆的位 ...

  2. 绘制中国国旗(1)(嵌入式基础)

    一.中国国旗的简介 国旗的形状. 颜色两面相同,旗五星两面相对.为便利计,本件仅以旗杆在左之一面为说明之标准. 对于旗杆在右之一面,凡本件所称左均应改右,所称右均应改左.       国旗的形状. 颜 ...

  3. 学习路之gis--如何获取中国地图的shp文件(含省级

    1.下载地图json文件 网址:DataV.GeoAtlas地理小工具系列 http://datav.aliyun.com/tools/atlas/index.html 2.点击下载文件 也可以用ge ...

  4. Java学习day015 如何写伪代码

    day015  如何写伪代码 在学习的过程中老师要求我们在写程序之前先写伪代码,一开始我是拒绝的但奈何没有用,小的程序直接都写出来了再返回写伪代码有点烦,但是一想如果程序大一点复杂一点如何下手都是问题 ...

  5. Java学习之仿写Tomcat

    一.原理讲解 OSI七层模型 如何调动后四层协议 先仿写一个socket服务端和客户端接发数据的demo /*** 服务器端*/ public class ServerA {//main方法是主线程要 ...

  6. eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明

    context-param.listener.filter.servlet  首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...

  7. Python用海龟绘制中国国旗

    本人是个大二学生嘛,最近对python比较感兴趣,还没正式入门,只能稍微写点较为简单的代码,当然,自己写的国旗代码也比较繁琐基础,话不多说,上代码,还望大佬们指正! # 首先绘制国旗的矩形框架 fro ...

  8. java学习笔记(2):获取文件名和自定义文件过滤器

    //自定义文件过滤器import java.io.File;import javax.swing.filechooser.*;public class JavaChooser extends File ...

  9. vue中使用echarts绘制中国地图

    首先需要一个绘制中国地图的json文件(资源还在审核,审核过后会重新贴上来) 1.首先引入echarts和json文件,在需要的地方引即可 import echarts from 'echarts'; ...

  10. 用记事本写xml文档

    用记事本写xml文档时要注意文件的编码格式: 一般记事本默认编码:ANSI 假如 用记事编写后缀名为xml的文档 文件内容如下: <?xml version="1.0" en ...

最新文章

  1. 贪心 ---- Educational Codeforces Round 90 (Rated for Div. 2)E. Sum of Digits[数位贡献+思维题+贪心]
  2. 第十六届智能车竞赛安徽赛区成绩与奖项公示
  3. django-request对象
  4. 深入理解z-index
  5. mysql 自定义抛出异常_C#自定义异常(throw抛出异常)
  6. 汇编中类似数组的寻址方式
  7. break和continue关键字
  8. FTP命令:下载,上传FTP服务器中的文件
  9. Spring MVC类型转换的意义
  10. 详细讲解怎样做数据仓库需求分析
  11. c++ PP第十一章最后一题
  12. 神经网络学习小记录59——Pytorch搭建常见分类网络平台(VGG16、MobileNetV2、ResNet50)
  13. 浏览器iframe跨域
  14. awl伪装MAC地址进行多线程SYN攻击
  15. NeurIPS 2019 | DetNAS:首个搜索物体检测Backbone的方法
  16. wx python 基本控件
  17. win7系统安装信息服务器不可用怎么办,Win7电脑RPC服务器不可用怎么办 RPC服务器不可用解决方法...
  18. 为网页添加列表和超链接——精美电商悬浮窗
  19. 自考深圳大学计算机专业难吗,深圳大学自考难吗
  20. IIS上asp.net网站无法访问

热门文章

  1. 我两个月了_猪队友_新浪博客
  2. VSCode总结_V2
  3. 十大android开发畅销书——android开发必备
  4. 学生党还是不当月光族舒服
  5. AcWing 1148. 秘密的牛奶运输
  6. 储能市场规模将达1000亿元 化工人才招聘需求上涨
  7. #define PINT int*与typedef int *SINT的区别.
  8. mysql--常用基本语法
  9. 《视觉 SLAM 十四讲》V2 第 8 讲 视觉里程计2 【如何根据图像 估计 相机运动】【光流 —> 直接法】
  10. 交易提示:2010年9月13日