public static List<ExternalParser> read(Element element) throws TikaException, IOException {
        List<ExternalParser> parsers = new ArrayList<>();

        if (element != null && element.getTagName().equals(EXTERNAL_PARSERS_TAG)) {
            NodeList nodes = element.getChildNodes();
            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element child = (Element) node;
                    if (child.getTagName().equals(PARSER_TAG)) {
                        ExternalParser p = readParser(child);
                        if (p != null) {
                            parsers.add(p);
                        }
                    }
                }
            }
        } else {
            throw new MimeTypeException(
                    "Not a <" + EXTERNAL_PARSERS_TAG + "/> configuration document: " +
                            (element != null ? element.getTagName() : "n/a"));
        }

        return parsers;
    }
Builds up ExternalParser instances based on XML file(s)
which define what to run, for what, and how to process
any output metadata.
Typically used to configure up a series of external programs
(like catdoc or pdf2txt) to extract text content from documents.

<pre>
 TODO XML DTD Here
</pre>
tika-core/src/main/java/org/apache/tika/parser/external/ExternalParsersConfigReader.java