如何在java中使用DomParser将xml解析为文档?

如何在java中使用DomParser将xml解析为文档?,java,xml,dom,xml-parsing,Java,Xml,Dom,Xml Parsing,我试图解析一个文件大小为10MB的文档。实际上,它以前是解析的。现在,我为文档获取空对象。不要在我做错的地方犯错误。请给我找到解决办法 class Parser { Document doc; Parser() { doc = null; } public void readXmlToDom(String path, String uuid) { try { DocumentBuilderFactory

我试图解析一个文件大小为10MB的文档。实际上,它以前是解析的。现在,我为文档获取空对象。不要在我做错的地方犯错误。请给我找到解决办法

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);
    }
}
一切都很好,除了我以空对象结束..请任何人解决这个问题。
提前感谢,

如果要这样输出文档,您需要对其进行
序列化

你可以这样做:

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
中,并在完成后将其正确关闭。

您如何知道它是空对象?您是否看到任何异常?你的<代码>路径<代码>是否正确?并且取决于你到底想要实现什么,你应该最终考虑使用SAXPARSER而不是DOMPARSER,因为它内存消耗很大(看你的10MB文件)。默认情况下,doc将为null-构造函数中不需要init。。。