【问题标题】:How to parse SVG in Java/Android?如何在 Java/Android 中解析 SVG?
【发布时间】:2012-05-07 19:04:37
【问题描述】:

假设我的资产中有一个 .svg 文件,其中包含某处

<polygon id="collide" fill="none" points="45,14 0,79 3,87 18,92 87,90 98,84 96,66 59,14"/>

您认为找到此多边形并将其点解析为 Points[] 数组的最佳方法是什么?

谢谢!

【问题讨论】:

标签: java android svg


【解决方案1】:

如上面评论中所说,使用 XML 和 XPath 可以轻松完成(无异常检查):

public static Point[] getPoints(String xml) throws Exception {
    DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = db.parse(new InputSource(new StringReader(xml)));
    XPath xpath = XPathFactory.newInstance().newXPath();
    XPathExpression expr = xpath.compile("//polygon[@id='collide']/@points");
    String[] pointsAttr = ((String) expr.evaluate(doc, XPathConstants.STRING)).split("\\p{Space}");
    Point[] points = new Point[pointsAttr.length];
    for (int i = 0; i < pointsAttr.length; ++i) {
        String[] coordinates = pointsAttr[i].split(",");
        points[i] = new Point(Integer.valueOf(coordinates[0]), Integer.valueOf(coordinates[1]));
    }
    return points;
}

我不知道您在 Android 上可以使用什么。

【讨论】:

  • 谢谢!只有它给了我“java.net.MalformedURLException: Protocol not found:
  • 我编辑了上面的代码,之前的代码确实是从文件中读取 XML,现在它是从字符串中读取的,所以您只需将 XML 的内容放入 @987654322 @ 变量,并将其传递给函数。
猜你喜欢
  • 2013-10-04
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2023-04-01
  • 1970-01-01
  • 2011-01-30
相关资源
最近更新 更多