Как правильно перебрать xml с помощью Java? - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть XML-файл, начинающийся с:

<?xml version="1.0"?>
<results>
    <result id="0001">
        <hometeam>
            <name>Dantooine Destroyers</name>
            <score>6</score>
        </hometeam>
        <awayteam>
            <name>Wayland Warriors</name>
            <score>0</score>
        </awayteam>
    </result>
    <result id="0002">
        <hometeam>
            <name>Dantooine Destroyers</name>
            <score>3</score>
        </hometeam>
        <awayteam>...

и в Java-файле:

if(event.isStartElement()){
    if(event.asStartElement().getName().getLocalPart().equals(HOME)){
        System.out.println("In hometeam"); // for testing purposes

        event = eventReader.nextEvent(); // I expect <name> element

        if(event.isStartElement()){ // <------------ FALSE
            if(event.asStartElement().getName().getLocalPart().equals(NAME)){....

Я ожидаю, что это утверждение будет истинным для элемента <name>но если я вставлю System.out.println(event.isStartElement()), я получу FALSE ....

Также event.getEventType() возвращает XMLEvent.CHARACTERS, что я не понимаю ... Кто-нибудь может понять почему?

Не стесняйтесь вносить изменения в теги / заголовки и вопросы, если это необходимо.

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Этот вызов .nextEvent (), вероятно, переносит пробел между <hometeam> и <name>. Обратите внимание, что в XML все символьные данные между тегами (даже если это пробелы или переводы строк) также доступны из API.

Вы можете проверить это, напечатав элемент.

Обычно вы не видите этот пробел с API на основе DOM (или вы можете легко его игнорировать), но с API, управляемыми событиями (такими как SAX или StAX), вы должны его игнорировать.

1 голос
/ 19 декабря 2011

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

...