我正在尝试解析文件大小为10MB的文档。实际上,它之前正在解析。现在,我正在为文档获取null对象。不要在我做错的地方得到错误。请找到解决方案。
class Parser {
Document doc;
Parser() {
doc = null;
}
public void readXmlToDom(String path, String uuid) {
try {
DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
InputStream inputStream = new FileInputStream(new File(path));
doc =
documentBuilderFactory.newDocumentBuilder().parse(inputStream);
}
catch (SAXException | IOException | ParserConfigurationExceptione) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(doc);
}
}
一切正常,除非我以null对象结束。请解决这个问题。 提前谢谢,
答案 0 :(得分:0)
如果要像这样输出文档,则需要serialize
。
你可以这样做:
public static byte[] serializeDOM(Document doc) throws TransformerFactoryConfigurationError, TransformerException {
ByteArrayOutputStream os = null;
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
DOMSource source = new DOMSource(doc);
os = new ByteArrayOutputStream();
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
return os.toByteArray();
} finally {
IOUtils.closeQuietly(os);
}
}
按照您的方式进行操作将始终输出“null”(这并不意味着对象为null
)。
此外,您应该将InputStream
包裹在BufferedInputStream
中,并在完成后将其正确关闭。