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

时间:2012-01-25 11:05:02

标签: java xml dom xml-parsing

我正在尝试解析文件大小为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对象结束。请解决这个问题。 提前谢谢,

1 个答案:

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