gpt4 book ai didi

java - 从 XML 中提取 SVG。选择哪个 Java XML API?

转载 作者:行者123 更新时间:2023-12-01 13:48:14 36 4
gpt4 key购买 nike

我需要执行以下操作:解析包含 SVG(可缩放 vector 图形)作为某些元素的 XML 文档。SVG 本身就是 XML。但我需要将 SVG 部分作为一个整体提取,而不需要解析 SVG 字符串的内容。

示例:

 ...
<symbol>
<svg> [arbitrary svg/xml content here ...] </svg>
</symbol>
...

我想解析文档并提取 symbol 标记之间的字符串。

我对 Java XML API 不太熟悉。您会推荐哪一个来完成这项任务? DOM、SAX、StAX?一些食谱将不胜感激。我了解它们之间的差异,无需解释基础知识。但似乎没有一个能够完美地完成该任务,因为我需要获取 XML 字符串。

最佳答案

正如 @Georgy 所说,决定使用 DOM、SAX 还是 StAX 取决于您的 XML 大小。大多数时候,使用 DOM 解析器会非常简单,并且也适用于大多数中小型 XML 文档。假设您的文档结构是:

<?xml version="1.0" encoding="UTF-8"?>
<rootElement>
<someElement>
<symbol>
<svg>[arbitrary svg/xml content here ...]</svg>
</symbol>
</someElement>
</rootElement>

然后您可以使用 DOM 和 XPath API 查询文档,如下所示:

//    Parsing XML document
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
dbFactory.setIgnoringElementContentWhitespace(true);
dbFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
byte[] xmlDATA = yourXMLAsString.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(xmlDATA);
Document doc = dBuilder.parse(in);

// Accessing SVG element using XPath
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
String xpathQuery = "/rootElement/someElement/symbol/svg";
XPathExpression expr = xpath.compile(xpathQuery);
Node svgNode = (Node) expr.evaluate(doc, XPathConstants.NODE);

如果您想以纯文本形式访问 svg 内容,可以使用检索到的节点的 getTextContent() 方法:

String svgContent = svgNode.getTextContent();

关于java - 从 XML 中提取 SVG。选择哪个 Java XML API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180802/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com