在最近的项目中使用 Dom4j 解析 xml 发现性能低下,有锁竞争的情况,解决如下:
SAXParserFactory factory = new org.apache.xerces.jaxp.SAXParserFactoryImpl();
factory.setValidating(false);
factory.setNamespaceAware(false);
SAXReader reader = new SAXReader();
reader.setXMLReader(factory.newSAXParser().getXMLReader());
Document document = reader.read(new InputSource(new StringReader(xmlString)));
Node node = document.selectSingleNode(xpath);
选择使用 xerces 的 XMLReader 进行解析,问题解决。