java获取SVG文件里面得所有标签

今天客户提出来svg 图可能随时要换,所有我同事就提出了解析svg得代码,然后根据.vue文件操作svg图,我这边就找了一下网上解析svg 文件得代码但是都没说的很明白我自己建了一个java 项目测试了一下

// 解析svg
public static String analysisofSVG(String URI) throws Exception {
    File file = new File(URI);//svg url
    String parser = XMLResourceDescriptor.getXMLParserClassName();
    SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
    Document doc = f.createDocument(file.toURI().toString());
    //获取svg 标签得Id
    Element element = doc.getElementById("svgid");
    String elementStr = TransformationSVG(element);
    System.out.println(elementStr);
    return elementStr;
}

// 将标签转换成字符串
public static String TransformationSVG(Element element) {
    TransformerFactory transFactory = TransformerFactory.newInstance();
    Transformer transformer = null;
    try {
        transformer = transFactory.newTransformer();
    } catch (TransformerConfigurationException e) {
        e.printStackTrace();
    }
    StringWriter buffer = new StringWriter();
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    try {
        transformer.transform(new DOMSource(element), new StreamResult(buffer));
    } catch (TransformerException e) {
        e.printStackTrace();
    }
    String elementStr = buffer.toString();
    System.out.println("svg 所有标签"+elementStr);
    return elementStr;

}

重点是获取svg标签id 这啊,svg 标签是没有id 得,我们可以给他想办法设置以下id,这个网上都有。

 

 

这个是需要的jar 包有需要的下载地址链接:https://pan.baidu.com/s/1BUKRYwym8qKValldR__dKw 
提取码:br6m

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java可以通过使用Apache Batik库来生成SVG文件。Batik是一个基于Java的开源库,提供了一些工具和API来操作SVG文档。 下面是一个简单的Java代码示例,演示如何使用Batik创建一个SVG文件: ```java import java.io.*; import org.apache.batik.dom.svg.SVGDOMImplementation; import org.w3c.dom.*; import org.w3c.dom.svg.*; public class SVGCreator { public static void main(String[] args) { // 创建SVG文档对象 DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; SVGDocument doc = (SVGDocument) impl.createDocument(svgNS, "svg", null); // 设置SVG文档属性 SVGElement root = doc.getRootElement(); root.setAttributeNS(null, "width", "100"); root.setAttributeNS(null, "height", "100"); // 创建矩形元素 SVGRect rect = doc.createSVGRect(); rect.setX(10); rect.setY(10); rect.setWidth(80); rect.setHeight(80); // 添加矩形元素到SVG文档 SVGGraphicsElement g = doc.createElementNS(svgNS, "g"); g.appendChild(rect); root.appendChild(g); // 保存SVG文档到文件 try { Writer out = new OutputStreamWriter(new FileOutputStream("output.svg"), "UTF-8"); SVGTranscoder transcoder = new SVGTranscoder(); transcoder.writeSVGDocument(doc, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 这个示例创建了一个100x100像素的SVG文档,并在其中添加了一个矩形元素。然后,使用Batik的SVGTranscoder类将SVG文档保存到文件中。你可以使用任何文本编辑器打开该文件,并查看生成的SVG代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值