Nano Hash - криптовалюты, майнинг, программирование

Экспорт определенных деталей XML-файла с помощью Java

У меня есть файл XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE dblp SYSTEM "dblp-2019-11-22.dtd">
<dblp>
<phdthesis mdate="2016-05-04" key="phd/dk/Heine2010">
<author>Carmen Heine</author>
<title>Modell zur Produktion von Online-Hilfen.</title>
<year>2010</year>
<school>Aarhus University</school>
<pages>1-315</pages>
<isbn>978-3-86596-263-8</isbn>
<ee>http://d-nb.info/996064095</ee>
</phdthesis><phdthesis mdate="2020-02-12" key="phd/Hoff2002">
.
. (continues with the same tags for a lot of other books)

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

Код, который я написал до сих пор:

public class Publications {
    public static void main(String[] args) {
    try
    {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();
        DefaultHandler handler = new DefaultHandler()
        {
            boolean year = false;

            //parser starts parsing a specific element inside the document
            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
            {
                System.out.println("Start Element :" + qName);
                if(qName.equalsIgnoreCase("Year"))
                {
                    year=true;
                }

            }
            //parser ends parsing the specific element inside the document
            public void endElement(String uri, String localName, String qName) throws SAXException
            {
                System.out.println("End Element:" + qName);
            }
            //reads the text value of the currently parsed element
            public void characters(char ch[], int start, int length) throws SAXException
            {
                if (year)
                {
                    System.out.println("Year : " + new String(ch, start, length));
                    year = false;
                }

            }
        };
        saxParser.parse("dblp-2020-04-01.xml", handler);
    }
catch (Exception e)
    {
        e.printStackTrace();
    }
}
}

Я также добавляю исключения, которые я получаю:

java.io.FileNotFoundException: C:\Users\Deray\DataAnalysis\dblp-2020-04-01.dtd 
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
    at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
    at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:184)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:654)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:860)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
    at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
    at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324)
    at java.xml/javax.xml.parsers.SAXParser.parse

(SAXParser.java:276) в Publications.main(Publications.java:44)

Есть ли у вас другие предложения по реализации?

17.04.2020

  • Есть ли исключение? Если да, можете ли вы добавить это к своему вопросу, пожалуйста? 17.04.2020
  • Добавлены исключения @JaCo 17.04.2020
  • Я думаю, проблема в том, что ваш файл не найден. Где это находится? Он должен быть в папке ресурсов. Структура проекта была бы полезна. 17.04.2020
  • @JaCo Я переместил файл в папку src, но снова появляются те же ошибки 17.04.2020
  • Используйте функцию this.getClass().getResourceAsStram или функцию getClassloader().getRersourceAsStream. 17.04.2020

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..