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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как читать из XML значения необходимого элемента 
:(
    Опции темы
tagirhamon
  Дата 3.3.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.2.2006
Где: г. Казань

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



Цитата

  XML файл правильный. Пробовал следующим образом, но почему то не читает, точнее возвращает пустую строку.

Код

 void button1_actionPerformed(ActionEvent e) {
   Document doc=null;
    try
  {
    DocumentBuilderFactory dbf =  DocumentBuilderFactory.newInstance();

    DocumentBuilder db = dbf.newDocumentBuilder();

  FileInputStream f= new FileInputStream("C:/Params.xml");
   doc = db.parse(f);
  if (doc != null) printDomTree(doc);

  }


  catch (Exception ex)
  {
    text.append(ex.toString());
  }


  }
  public void printDomTree(Document doc)
   {

   NodeList list = doc.getElementsByTagName("operation");
     
    Node thisnode=list.item(0);
    String str=thisnode.getFirstChild().getNodeValue();
     text.append(str);

     }


Это сообщение отредактировал(а) tagirhamon - 3.3.2006, 23:31
PM MAIL   Вверх
batigoal
Дата 3.3.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Цитата(tagirhamon @ 3.3.2006, 12:43 Найти цитируемый пост)
String str=thisnode.getFirstChild().;

Видимо, здесь у тебя опечатка?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
batigoal
Дата 3.3.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



А я использую вот такой класс для чтения XML (выдрал из кода, но там вроде все очевидно):
Код

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;

import java.io.IOException;
import java.io.InputStream;

import photosight.error.PSBException;

public class XMLHelper
{
    public static Document parseInputStream(InputStream inputStream) throws PSBException
    {
        Document document;
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setValidating(false);
        factory.setNamespaceAware(true);
        factory.setIgnoringElementContentWhitespace(true);
        try
        {
            DocumentBuilder builder = factory.newDocumentBuilder();
            document = builder.parse(inputStream);
        }
        catch (ParserConfigurationException e)
        {
             throw new PSBException(e, "Cannot configure XML parser!");
        }
        catch (IOException e)
        {
             throw new PSBException(e, "Input/Output error while processing input stream with XML file!");
        }
        catch (SAXException e)
        {
             throw new PSBException(e, "Error while parsing XML file!");
        }
        return document;
    }

    protected static String getTagText(Element tag)
    {
        if(tag.getChildNodes().item(0)!=null &&  tag.getChildNodes().item(0).getNodeType()==Element.TEXT_NODE)
            return tag.getChildNodes().item(0).getNodeValue();
        else return "";
    }

    protected static String getAttributeValue(Element tag, String attributeName)
    {
        return tag.getAttributes().getNamedItem(attributeName).getNodeValue();
    }
}


Использование:

Код

            Document document = parseInputStream(new FileInputStream(fileName));
            Element root = document.getDocumentElement();
            Config config = new Config();
            if(root == null)
                return config;

            Element connection = (Element)root.getElementsByTagName("connection").item(0);
            if(connection != null)
            {
                Element proxy = (Element)connection.getElementsByTagName("proxy").item(0);
                if(proxy != null)
                {
                    config.setProxyHost(getAttributeValue(proxy, "host"));
                    config.setProxyPort(Integer.parseInt(getAttributeValue(proxy, "port")));
                }
            }


Код, конечно, несовершенный, но уж как есть smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
tagirhamon
Дата 9.3.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.2.2006
Где: г. Казань

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



Цитата

  Ничего не получается, метод getNodeValue() возвращает пустую строку! Какие будут идеи? smile 


Это сообщение отредактировал(а) tagirhamon - 9.3.2006, 21:36
PM MAIL   Вверх
LSD
Дата 9.3.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Посмотрел я твой код, у меня все нормально работает. На такой XML:
Код
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <operation>Some operation</operation>
</root>

возвращает Some operation. Приведи свой XML.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
tagirhamon
Дата 10.3.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.2.2006
Где: г. Казань

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




Код

<?xml version="1.0" encoding="windows-1251" ?>
<nomer>
  <first1> 
      <tex2>
      gfhgh
      </tex2>
      <tex1>
       12345
      </tex1>
 </first1>
  <first1>
      <tex2> 
      giuhglkgg
      </tex2>
 </first1>
 <first1>
      <tex2> 
      hyfggklygkltgku
      </tex2>
 </first1>
<second> 22222222222222</second>
  <third> 33333333333333  </third>
</nomer>

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


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Гм. Ну и где здесь тег operation?

Это сообщение отредактировал(а) Lamer George - 10.3.2006, 10:58


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
tagirhamon
Дата 10.3.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.2.2006
Где: г. Казань

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



Цитата

Что то я не догнал или вы не поняли? зачем тут тег operation?

PM MAIL   Вверх
LSD
Дата 10.3.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(tagirhamon @ 10.3.2006, 11:45 Найти цитируемый пост)
зачем тут тег operation?

Зачем это вопрос к тебе, у тебя этот - doc.getElementsByTagName("operation"); код ищет тег с именем operation. В документе его нет, вот ты и получаешь NodeList нулевой длинны.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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