Динамическое чтение тегов с использованием SAX-парсера - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь прочитать XML динамически с помощью парсера SAX, я попытался использовать этот пример, но в этом, мне нужно жестко (создать переменную) для всех подтэгов, пожалуйста, предложите если для этого есть какая-либо функция, доступная в SAX.

Образец XML:

<cloudHubDeployment>
                    <uri>https://anypoint.mulesoft.com</uri>
                    <muleVersion>${muleVersion}</muleVersion>
                    <username>${username}</username>
                    <password>${password}</password>
                    <properties>
                        <env>${env}</env>
                    </properties>
</cloudHubDeployment>

Мое требование - прочитать все подтэги и их последующие значения внутри

1 Ответ

1 голос
/ 26 апреля 2020

попробуйте следующее решение,

try {
    File inputFile = new File("Input.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document document = dBuilder.parse(inputFile);
    document.getDocumentElement().normalize();
    Element rootElement = document.getDocumentElement(); // gets the document's root element (cloudHubDeployment)
    NodeList nodeList = rootElement.getElementsByTagName("*"); // get all child elements under the root (cloudHubDeployment) element
    for (int i = 0; i < nodeList.getLength(); i++) {
        Node node = nodeList.item(i);
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            System.out.println("Element Name : "+node.getNodeName()+", "
            + "Value : "+element.getTextContent().trim());
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

вывод,

Element Name : uri, Value : https://anypoint.mulesoft.com
Element Name : muleVersion, Value : ${muleVersion}
Element Name : username, Value : ${username}
Element Name : password, Value : ${password}
Element Name : properties, Value : ${env}
Element Name : env, Value : ${env}

собрать все элементы и значения в файле xml,

NodeList nodeList = document.getElementsByTagName("*");
for (int temp = 0; temp < nodeList.getLength(); temp++) {
    Node node = nodeList.item(temp);
    if (node.getNodeType() == Node.ELEMENT_NODE) {
        Element element = (Element) node;
        System.out.println("Element Name : "+node.getNodeName()+", "
        + "Value : "+element.getTextContent().trim());
    }
}
...