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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java xpath TransformerException 
:(
    Опции темы
4epT
Дата 26.3.2012, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет. Есть вот такой метод:

Код

private void SetNodeValue(Document doc, String id, String val) throws Exception {
        String xpathStr = ".//*[@id='" + id + "']";
        XPathFactory xpathFact = XPathFactory.newInstance();
        XPath xpath = xpathFact.newXPath();
        NodeList node_list = (NodeList) xpath.evaluate(xpathStr, doc, XPathConstants.NODESET);
        Node node = node_list.item(0);
        if (node != null) {
            int type = node.getNodeType();
            if (type == Node.ELEMENT_NODE) {
                Node child_node = node.getFirstChild();
                if (child_node != null) {
                    if (child_node.getNodeType() == node.TEXT_NODE) {
                        node.setTextContent(val);
                    }
                } else {
                    node.setTextContent(val);
                }
            }
        }
    }


В метод передается вот такой xml:

Код

...
<CITY id="N65565_CITY"/>
<STREET id="N65567_STREET"/>
<BUILD id="N65569_BUILD"/>
<CORP id="N65571_CORP"/>
<APT id="N65574_APT"/>
...


При передачи id = N65567_STREET, val = "Какой нибудь русский текст"

Сыпится вот такой exception:

Код

avax.xml.transform.TransformerException: Unable to evaluate expression using this context
    at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:363)
    at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:213)
    at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:275)


Сыпится в строке:

Код

NodeList node_list = (NodeList) xpath.evaluate(xpathStr, doc, XPathConstants.NODESET);


С чем это может быть связано ?
PM MAIL   Вверх
Pawl
Дата 28.3.2012, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(4epT @  26.3.2012,  19:44 Найти цитируемый пост)
Сыпится в строке: NodeList node_list = (NodeList) xpath.evaluate(xpathStr, doc, XPathConstants.NODESET);

Я так понял, что doc - это имя xml-документа? Попробуйте считывать его в кодировке UTF-8.
Когда я парсил xml SAX'ом, я делал так:
Код

    //this method returns result of validation account
    public boolean isAccountExist(String fileName, String pass, String lgn) throws Exception {
        InputStream inputStream = new FileInputStream(new File(fileName));
        Reader reader = new InputStreamReader(inputStream, "UTF-8");
        try {                        
            InputSource is = new InputSource(reader);
            is.setEncoding("UTF-8");
            factory.newSAXParser().parse(is, new MyParser(pass, lgn));
            return isTrueAccount;
        } finally {
            reader.close();
            inputStream.close();      
        }        
    }

и в xml-файл, в описание, надо также добавить строчку
Код

encoding="UTF-8"



--------------------
В действительности всё совсем не так, как на самом деле
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.0600 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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