如果有一个XML响应,它存储在一个字符串缓冲区中,我将如何解析它?
答
使用JAXB:
// Given StringBuffer sb from your URL
String contextPath = "path/to/generated/jaxb/package";
JAXBContext jc = JAXBContext.newInstance(contextPath);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Object o = u.unmarshal(new StreamSource(new StringReader(sb.toString())));
答
这取决于你想如何处理XML。
如果它是一个大文档,并且您只是想从头到尾执行一遍解析,那么就使用SAX API。此方法将使用更少的内存并具有更高的处理吞吐量。
如果您想要操作XML树,并在树上遍历节点,然后使用DOM API。该方法要求整个XML DOM存储在内存中,但允许您操作DOM并对其执行XPath类型查询。
我相信SAXON可以同时处理。