Как разобрать XML в Doc, используя DomParser в Java? - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь проанализировать документ размером 10 МБ. На самом деле, это был разбор ранее. Теперь я получаю нулевой объект для документа. не получите ошибку, где я делал неправильно. Пожалуйста, найдите мне решение.

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);
    }
}

Все работает нормально, за исключением того, что я заканчиваю нулевым объектом. Пожалуйста, решите эту проблему кто угодно. Заранее спасибо,

1 Ответ

0 голосов
/ 25 января 2012

Вам нужно 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).

Также вы должны обернуть InputStream в BufferedInputStream и правильно закрыть его, как только закончите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...