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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML Sax2 подгрузка файла, подгрузка *.xml из кода 
:(
    Опции темы
BAToff
Дата 10.8.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приветствую Вас !!!!

Значит так читаю тотуриалы по XML парсерам:

http://www.ibm.com/developerworks/ru/edu/x...2/section4.html

по sax парсерам прилогается следующий код

Код

/*
 * (C) Copyright IBM Corp. 2004.  All rights reserved.
 *
 * US Government Users Restricted Rights Use, duplication or
 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 *
 * The program is provided "as is" without any warranty express or
 * implied, including the warranty of non-infringement and the implied
 * warranties of merchantibility and fitness for a particular purpose.
 * IBM will not be liable for any damages suffered by you as a result
 * of using the Program. In no event will IBM be liable for any
 * special, indirect or consequential damages or lost profits even if
 * IBM has been advised of the possibility of their occurrence. IBM
 * will not be liable for any third party claims against you.
 */

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;

/**
 * This code creates a namespace-aware SAX parser, then 
 * echoes any namespace-qualified elements and attributes 
 * to the console.  
 */

public class SaxNS
  extends DefaultHandler 
{
  public void parseURI(String uri)
  {
    try
    { 
      SAXParserFactory spf = SAXParserFactory.newInstance();
      spf.setNamespaceAware(true);
      SAXParser sp = spf.newSAXParser();
      sp.parse(uri, this);
    }
    catch (Exception e)
    {
      System.err.println(e);
    }
  }
    
  /** Start element. */
  public void startElement(String namespaceURI, String localName, 
                           String qName, Attributes attrs) 
  {
    if (namespaceURI.length() > 0)
    {
      System.out.println("\nElement " + qName);
      System.out.println("\tLocal name = " + localName);
      if (qName.indexOf(':') > 0)
        System.out.println("\tNamespace prefix = " + 
                           qName.substring(0, qName.indexOf(':')));
      else
        System.out.println("\tNamespace prefix =");
      System.out.println("\tNamespace URI = " + namespaceURI);
    }

    if (attrs != null)
    {
      int len = attrs.getLength();
      for (int i = 0; i < len; i++)
        if (attrs.getURI(i).length() > 0)
        {
          System.out.println("\nAttribute " + 
                             attrs.getQName(i) + "=" + 
                             attrs.getValue(i));
          System.out.println("\tLocal name = " + 
                             attrs.getLocalName(i));
          if (qName.indexOf(':') > 0)
            System.out.println("\tNamespace prefix = " + 
                               attrs.getQName(i).
                               substring(0, 
                                         attrs.getQName(i).
                                         indexOf(':')));
          else
            System.out.println("\tNamespace prefix = ");
          System.out.println("\tNamespace URI = " + 
                             attrs.getURI(i));
        }
    }
  }

  //
  // ErrorHandler methods
  //

  /** Warning. */
  public void warning(SAXParseException ex) 
  {
    System.err.println("[Warning] "+
                       getLocationString(ex)+": "+
                       ex.getMessage());
  }

  /** Error. */
  public void error(SAXParseException ex) 
  {
    System.err.println("[Error] "+
                       getLocationString(ex)+": "+
                       ex.getMessage());
  }

  /** Fatal error. */
  public void fatalError(SAXParseException ex) 
    throws SAXException 
  {
    System.err.println("[Fatal Error] "+
                       getLocationString(ex)+": "+
                       ex.getMessage());
    throw ex;
  }

  /** Returns a string of the location. */
  private String getLocationString(SAXParseException ex) 
  {
    StringBuffer str = new StringBuffer();

    String systemId = ex.getSystemId();
    if (systemId != null)
    {
      int index = systemId.lastIndexOf('/');
      if (index != -1)
        systemId = systemId.substring(index + 1);
      str.append(systemId);
    }
    str.append(':');
    str.append(ex.getLineNumber());
    str.append(':');
    str.append(ex.getColumnNumber());

    return str.toString();
  } // getLocationString(SAXParseException):String

  /** Main program entry point. */
  public static void main(String argv[]) 
  {
    if (argv.length == 0 ||
        (argv.length == 1 && argv[0].equals("-help")))
    {
      System.out.println("\nUsage:  java SaxNS uri");
      System.out.println("   where uri is the URI of your XML document.");
      System.out.println("   Sample:  java SaxNS " + 
                         "sonnetnamespaces.xml");
      System.out.println("\nEchoes namespace-qualified elements and " + 
                         "attributes to the console.");
      System.exit(1);
    }

    SaxNS sns = new SaxNS();
    sns.parseURI(argv[0]);
  } // main(String[])
} 


Подгружающий из консоли файлик sonnet.xml.......

Код

<?xml version="1.0"?>
<sonnet pt:type="Shakespearean"
    xmlns:pt="http://www.literarysociety.org/poemtypes" > 
<auth:author 
      xmlns:auth="http://www.literarysociety.org/authors">
    <auth:lastName>Shakespeare</auth:lastName>
    <auth:firstName>William</auth:firstName>
    <auth:nationality>British</auth:nationality>
    <auth:yearOfBirth>1564</auth:yearOfBirth>
    <auth:yearOfDeath>1616</auth:yearOfDeath>
  </auth:author>
  <title>Sonnet 130</title>
  <lines>
    <line>My mistress' eyes are nothing like the sun,</line>
    <line>Coral is far more red than her lips red.</line>
    <line>If snow be white, why then her breasts are dun,</line>
    <line>If hairs be wires, black wires grow on her head.</line>
    <line>I have seen roses damasked, red and white,</line>
    <line>But no such roses see I in her cheeks.</line>
    <line>And in some perfumes is there more delight</line>
    <line>Than in the breath that from my mistress reeks.</line>
    <line>I love to hear her speak, yet well I know</line>
    <line>That music hath a far more pleasing sound.</line>
    <line>I grant I never saw a goddess go,</line>
    <line>My mistress when she walks, treads on the ground.</line>
    <line>And yet, by Heaven, I think my love as rare</line>
    <line>As any she belied with false compare.</line>
  </lines>
</sonnet>


ВОПРОС : что и самое главное где нужно нависать чтобы результат отображался не только в консоли командной строки но и В среде разработки.... А то лазить каждый раз в командную сторку не очень удобно

Спасибо!!!!
PM MAIL   Вверх
AlexeyVorotnikov
Дата 10.8.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Надо соответствующим образом настроить среду разработки. Как, спроси в соответствующем разделе форума.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
AntonSaburov
Дата 10.8.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Так у тебя реализован хэндлер для SAX парсера, который при начале нового тэга и в его окончании вызывается. startElement 0- посмотри описание SAXParser и DefaultHandler - это в J2SE API есть.

По сути парсер каждый раз дергает твой класс, который наследуется от DefaultHandler при каком-либо событии - тэг начался, тэг закончился, ошибка и т.д.
Записывай чего и куда хочешь. И все.

Добавлено через 50 секунд
Цитата(BAToff @  10.8.2007,  13:15 Найти цитируемый пост)
что и самое главное где нужно нависать чтобы результат отображался не только в консоли командной строки но и В среде разработки...

Это требует расшифровки - что-то я не понял вопроса
PM MAIL WWW ICQ   Вверх
BAToff
Дата 10.8.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сорри , скорей всего я не правильно выразился мне всего лишь нужно что бы при нажатии кнопки в Среде Eclipse в консоли отображался результат работы парсера. Пока что приходится делать ето из cmd (java -classpath . SaxNS sonnet.xml)
а в Eclipse срабатывает Exception - не находит файла *.xml , хотя файлик есть, он просто не знает как его зовут, а в отличае от cmd 
 
не спашивает как его зовут..

 public void parseURI(String uri)
.......
SAXParser sp = spf.newSAXParser();
sp.parse(uri, this); ----- Как я понял дело в этой строчке которая как раз и говрорит  "Уважаемый парсер sp проанализируй   вот      этот файл по адрессу uri который ты получил (из командной строки)"   

Пробывал тупо прописавать адресс за место uri , но не помогло 
PM MAIL   Вверх
AntonSaburov
Дата 10.8.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Так тебе надо выводить результаты работы парсера куда ?

Или тебя бесит ошибка ?
PM MAIL WWW ICQ   Вверх
AlexeyVorotnikov
Дата 10.8.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В Eclipse:
Меню Run->Open Run Dialog
В этом окне слева выбираешь прогу, которую запускаешь, справа на закладке Arguments в поле Program arguments вводишь имя файла. Жмёшь кнопку Run.


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

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

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


 




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


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

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