Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> парсинг xml через xpath. Проблема с синтаксисом 
V
    Опции темы
Tielvar
Дата 21.4.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 5.12.2008

Репутация: нет
Всего: нет



Здравствуйте, помогите разобраться с досадной ошибкой.
код выглядит так:
Код

private static XPath asd;

    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException {
       DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document d = (Document) builder.parse("ololo.xml");
        asd = XPathFactory.newInstance().newXPath();
        XPathExpression e = asd.compile("//root/tag1/@atri");
        NodeList l = (NodeList) e.evaluate(d, XPathConstants.NODESET);
        String [] text = new String[l.getLength()];
        for (int i = 0; i < l.getLength(); i++) {
            text[i] = l.item(i).getNodeValue();
            System.out.println("atri = "+text[i]);
        }
        for (int i = 0; i < text.length; i++) {
            asd.reset();
            e = asd.compile("/root/tag1[atri='"+text[i]+"']/text()");
            String res = (String) e.evaluate(d, XPathConstants.STRING);
            System.out.println("text = "+res);
        }
    }

xml выглядит так:
Код

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <tag1 atri="111" otheratri="tag1otheratri">text1</tag1>
    <tag1 atri="222" otheratri="tag2otheratri">text2</tag1>
</root>

результат работы:
Код

atri = 111
atri = 222
text = 
text = 

По моему мнению, этот код должен получить список атрибутов atri (получает), затем в цикле получить соответствующие текстовые значения (не работает). Пытался получить значения атрибута otheratri - такой вариант аналогично не работает, возвращает пустую строку. Что наталкивает на мысль о неправильном синтаксисе.  Опирался на статью http://www.ibm.com/developerworks/ru/libra...hapi/index.html

УПД: Поправил очевидную ошибку  smile что однако положение не спасло

Это сообщение отредактировал(а) Tielvar - 21.4.2010, 19:30
PM MAIL   Вверх
dobrolub
Дата 21.4.2010, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 11
Всего: 16



at (@) не забыл в условии?
Код

e = asd.compile("/root/tag1[@atri='"+text[i]+"']/text()");


 

PM   Вверх
Tielvar
Дата 22.4.2010, 03:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 5.12.2008

Репутация: нет
Всего: нет



Действительно, забыл.  smile Спасибо, помогло.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0760 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.