正如@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();
你已經試過了什麼?我認爲XML API取決於解析的xml大小。你也可以試試Jsoup - HTML解析器。它也可以解析XML,易於使用。 –
我無法真正理解在此擱置的原因。下面提出的答案是那種能夠幫助我很多的答案,那麼爲什麼要禁止更多有用的答案呢?我可以理解,這裏的答案可能是基於意見的,但這正是我想要的:關於如何在特定背景下解決任務的不同的,有爭議的觀點。請注意,我並不是一般要求「最好的」XML API,而是最適合於提取XML子文檔的任務,這不是那麼簡單的imho。 – Scrontch