Внешняя сущность отсутствует в выводе при синтаксическом анализе файла XML - синтаксический анализ Java / XML - PullRequest
0 голосов
/ 23 апреля 2020

Для разбора файла XML, я использовал ниже Java код,

    try (InputStream inputStream = new FileInputStream(inputFile)) {
        dbf = DocumentBuilderFactory.newInstance();
        dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
        dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        dbf.setXIncludeAware(false);
        dbf.setExpandEntityReferences(false);
        documentBuilder = dbf.newDocumentBuilder();
        document = documentBuilder.parse(inputStream);

        //Masking the text of each element/attribute
        maskNodeTree(document.getDocumentElement());
    } catch (SAXException e) {
        throw new MaskerException("Exception while parsing file :" + inputFile, e);
    } catch (IOException e1) {
        throw new MaskerException("File Issue" + inputFile, e1);
    } catch (ParserConfigurationException e) {
        throw new MaskerException("XML Configuration Failed for the file :" + inputFile, e);
    }

Примечание: запись вывода в файл отсутствует в вышеуказанном коде.

Ниже объявления DTD в файле XML,

Объявление Doctype с внешним объектом в источнике XML

Ниже я попытался пропустить синтаксический анализ,

 dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
 dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

Но он удаляет % IPIEntities; декларации DOCTYPE из XML

Ниже приведена декларация DOCTYPE в выходном файле XML,

Объявление Doctype с внешним объектом на выходе XML

Ожидание:

Мне нужна точная структура, которая будет показана в выходном файле. Не пропуская информации из источника, введите xml файл.

...