Java Как сравнить данные XML с расширениями файлов - PullRequest
0 голосов
/ 28 ноября 2018

Я новичок здесь, просто хотел попробовать, если я могу получить некоторую помощь здесь.Я хотел бы попросить помощи для моей проблемы.

Я получил XML-файл, и я хотел бы сравнить эти строки там с расширением файла для примера.Example.txt -> сравнить все строки в XML с моим расширением файла.

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href"tx ?>
<zip>
    <exclusions>

        <switch> .bak </switch>
        <switch> .tmp </switch>
        <switch> .frm </switch>
        <switch> .opt </switch>
        <switch> .met </switch>
        <switch> .i </switch>

    </exclusions>
 </zip>

Это мой XML-код, чтобы распечатать его, моя идея заключалась в том, чтобы сохранить все строки в массивах и сравнить их с моим расширением... но я не знаю как.

Надеюсь, у вас есть идеи для меня.

Спасибо

public class xmlFileExten {

    public static void main(String[] args) {

        try {

            File file = new File(xmlFile);

            DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance()
                    .newDocumentBuilder();

            Document doc = dBuilder.parse(file);

            System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

            if (doc.hasChildNodes()) {

                printNote(doc.getChildNodes());

            }

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }

    private static void printNote(NodeList nodeList) {

        for (int count = 0; count < nodeList.getLength(); count++) {

            Node tempNode = nodeList.item(count);

            if (tempNode.getNodeType() == Node.ELEMENT_NODE) {

                System.out.println("Node Value =" + tempNode.getTextContent());

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы можете использовать следующий код.Основные изменения:

1) Использование списка в качестве результата вместо массива,

2) Использование textNode AND getNodeValue () вместо getTextContent (getNodeValue возвращает текст только для этого узла),

3) Используя рекурсивную функцию,

public class xmlFileExten
{
    public static void main(final String[] args)
    {

        final List<String> extensionList = getExtensionList("1.xml");
        System.out.print(extensionList); // return [.bak, .tmp, .frm, .opt, .met, .i]
    }

    private static List<String> getExtensionList(final String fileName)
    {
        final List<String> results = new ArrayList<>();
        try
        {
            final File file = new File(fileName);

            final DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance()
                    .newDocumentBuilder();

            final Document doc = dBuilder.parse(file);

            if (doc.hasChildNodes())
            {

                results.addAll(getExtensionList(doc.getChildNodes()));

            }

        }
        catch (final Exception e)
        {
            System.out.println(e.getMessage());
        }
        return results;
    }

    private static List<String> getExtensionList(final NodeList nodeList)
    {
        final List<String> results = new ArrayList<>();
        for (int count = 0; count < nodeList.getLength(); count++)
        {

            final Node   tempNode = nodeList.item(count);
            final String value    = tempNode.getNodeValue();
            if (tempNode.getNodeType() == Node.TEXT_NODE && value != null && !value.trim().isEmpty())
            {
                results.add(value.trim());
            }
            results.addAll(getExtensionList(tempNode.getChildNodes()));
        }

        return results;
    }
}
0 голосов
/ 28 ноября 2018

Я думаю, что главная проблема здесь в том, что вы не можете разобрать его должным образом.Обратитесь к этому Эффективно проанализируйте XML для JAVA POJO , и вы можете использовать http://pojo.sodhanalibrary.com/, чтобы получить правильные классы POJO, необходимые для вашей задачи.После того, как вы получите POJO, вы можете сравнить расширения

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