Java DOM: getElementsByTagName не возвращает элементов? - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь проанализировать документ XML на http://web.mta.info/status/ServiceStatusSubway.xml и извлечь все элементы PtSituationElement с помощью следующего кода:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document subwayStatusDoc = builder.parse(new URL("http://web.mta.info/status/ServiceStatusSubway.xml").openStream());

NodeList situationList = subwayStatusDoc.getDocumentElement().getElementsByTagName("PtSituationElement");
System.out.println(situationList.item(0)); //prints null

Что я делаю неправильно здесь?

1 Ответ

1 голос
/ 12 января 2020

Теги PtSituationElement содержат дочерние теги, поэтому вам нужно go в них. Простая печать .item (0) основывается на методе toString (), и, по-видимому, он не очень хорошо объясняет ваши узлы.

Поэтому добавьте это, чтобы увидеть некоторые данные в дочерних узлах:

    Node item = situationList.item(0);
    NodeList childNodes = item.getChildNodes();
    for (int j = 0; j < childNodes.getLength(); j++) {
        System.out.println(childNodes.item(j).getTextContent());
    }

(Я не уверен, что вы хотите делать с данными в структуре xml, но этот пример показывает, как вы можете продолжить свою работу.)

Также, Я заметил, что теги LongDescription содержат HTML, что неверно XML (<br clear=left> должно быть <br clear=left> et c). Парсер может иметь проблемы с этим. Было бы лучше, если бы HTML удалось избежать (см. Как избежать "&" в XML? ).

...