使用Java读取svg路径数据的最简单方法?

我正在寻找使用svg图像并解析/处理不同的路径来进行自定义转换。 在Java中,简单地提取路径数据的最简单方法是什么? 我正在查看apache xmlgraphics / batik包,但是如何返回路径类型和参数并不是很明显。 有什么建议么?

要简单地提取path数据,您可以使用XPath。

假设您有此SVG并且您想要提取所有path数据(来自两个path元素):

               

首先将XML加载为Document:

 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("image.svg"); 

然后使用XPath选择所需的节点。 下面的表达式选择文件中所有path元素的d属性的内容:

 String xpathExpression = "//path/@d"; 

现在我们可以实例化XPath处理器并编译表达式:

 XPathFactory xpf = XPathFactory.newInstance(); XPath xpath = xpf.newXPath(); XPathExpression expression = xpath.compile(xpathExpression); 

由于预期结果是一个节点集(两个字符串),我们使用XPathConstants.NODESET作为第二个参数来评估SVG文档上的表达式:

 NodeList svgPaths = (NodeList)expression.evaluate(document, XPathConstants.NODESET); 

从那里,您可以使用以下方法提取第一组路径数据:

 svgPaths.item(0).getNodeValue();