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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбор xml документа 
:(
    Опции темы
xber9
Дата 1.9.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



пробую написать клиент к игре
написал пробное подключение к серверу
в ответ на запрос приходит xml пожатый  G-zip с ифой  о планетах
сами понимете планет может быть много 
так вот вопос  как вытащить из этого xml данные  когда уде даже при чтениии  выскакиеваи SAXException
 
Код
 
Document doc = null;
        try {
            doc = bulder.parse(f);
        } catch (IOException ex7) {     System.out.print(  "IOException ");          
        
        } catch (SAXException ex7) {
            System.out.print(  "SAXException");          
        
        }
       


вот как правельно организовать распознание данныех я не хнаю может кто  поможет?

вот полный код программы
аккаунт доступен до пятницы
прошу помошите  так как в xml я полный пофан

Код

package untitled1;
import java.io.*;
import java.util.zip.*;
import java.net.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Untitled1 {
       static String data ;
    public Untitled1() {
    }

    public static void main(String[] args) {
            // Подготовить данные
            try {

           data = URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode("debug", "UTF-8");
                data += "&" + URLEncoder.encode("pwd", "UTF-8") + "=" +
                        URLEncoder.encode("debug", "UTF-8");
            data += "&" + URLEncoder.encode("action", "UTF-8") + "=" + URLEncoder.encode("login", "UTF-8");
        } catch (UnsupportedEncodingException ex) {
            System.out.print(  "невозможно перекодировать данные");          
        }
            
            URL url = null;
            try {
                url = new URL(
                        "http://www.the-game.ru:80/frames/empire_info/on/myplanets/asxml/");
            } catch (MalformedURLException ex1) {
                System.out.print(  "невозможно создать URL ");          

            }
    URLConnection conn = null;
    try {
        conn = url.openConnection();
    } catch (IOException ex2) {
        System.out.print(  "невозможно создатьь соединение");          

    }
     conn.setDoOutput(true);
    OutputStreamWriter wr = null;
    try {
        wr = new OutputStreamWriter(conn.getOutputStream());
    } catch (IOException ex3) {
        System.out.print(  "невозможно получить данные");          

    }

    try {
        wr.write(data);
     wr.flush();
 } catch (IOException ex4) {

 }

     // Get the response

GZIPInputStream f = null;
try {
    f = new GZIPInputStream(conn.getInputStream());
} catch (IOException ex5) {
    System.out.print(  "невозможно прочитать G-zip");          

}
   
     int c;

    try {
        while ((c = f.read()) != -1) {
            System.out.print((char) c);
        }
        DocumentBuilderFactory factory=  DocumentBuilderFactory.newInstance();
        DocumentBuilder bulder = null;
        try {
            bulder = factory.newDocumentBuilder();
        } catch (ParserConfigurationException ex6) {
            System.out.print(  "невозможно создатьDocumentBuilder ");          
        
        }
        Document doc = null;
        try {
            doc = bulder.parse(f);
        } catch (IOException ex7) {     System.out.print(  "IOException ");          
        
        } catch (SAXException ex7) {
            System.out.print(  "SAXException");          
        
        }
        //System.out.print( doc.getElementsByTagName("iframe") );







    wr.close();
     f.close();
 } catch (IOException ex8) {
 }
}}




вчера допустил ошибку в адресе -- исправил
кстати в ответ приходит такой xml
Код

- <dc stathost="/static" l="1" m="O" s="E" this-url="frames/empire_info/on/myplanets/" main-res="3609" second-res="2559" money="1130" user="debug" id="237031" turn="5657" turn-n="2398" bonus-price="-15.3" paid="1" in-turn="0">
  <formdata action="login" login="debug" pwd="debug" planetid="1120:1280" /> 
- <iframe>
- <user-planets>
  <planet x="1120" y="1280" name="debug's home" temperature="42" o="48" e="36" m="61" surface="58" population="84210" corruption="0" hidden="1" /> 
  </user-planets>
  </iframe>
  <errors /> 
  </dc>`


Это сообщение отредактировал(а) xber9 - 2.9.2007, 10:20
PM MAIL   Вверх
hamsterKSU
Дата 3.9.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



xml который ты привет не кидает при парсинге ни какой ошибки и парсится нормально
PM MAIL ICQ   Вверх
hamsterKSU
Дата 3.9.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я не могу понять зачем обварачивать ответ сервера в  f = new GZIPInputStream(conn.getInputStream());.
я попробовал у меня заработало так
Код

public static void main(String[] args) {
        // Подготовить данные
        try {

            data = URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode("debug", "UTF-8");
            data += "&" + URLEncoder.encode("pwd", "UTF-8") + "=" + URLEncoder.encode("debug", "UTF-8");
            data += "&" + URLEncoder.encode("action", "UTF-8") + "=" + URLEncoder.encode("login", "UTF-8");
        } catch (UnsupportedEncodingException ex) {
            System.out.print("невозможно перекодировать данные");
        }

        URL url = null;
        try {
            url = new URL("http://www.the-game.ru:80/frames/empire_info/on/myplanets/asxml/");
        } catch (MalformedURLException ex1) {
            System.out.print("невозможно создать URL ");

        }
        URLConnection conn = null;
        try {
            conn = url.openConnection();
        } catch (IOException ex2) {
            System.out.print("невозможно создатьь соединение");

        }
        conn.setDoOutput(true);
        OutputStreamWriter wr = null;
        try {
            wr = new OutputStreamWriter(conn.getOutputStream());
        } catch (IOException ex3) {
            System.out.print("невозможно получить данные");

        }

        try {
            wr.write(data);
            wr.flush();
        } catch (IOException ex4) {

        }

        // Get the response
        InputStream is = null;
        StringBuffer sb = new StringBuffer();
        try {
            is = conn.getInputStream();
            int c;
            while ((c = is.read()) != -1) {
                sb.append((char) c);
            }
            System.out.println(sb.toString());
        } catch (IOException e)  {
            e.printStackTrace();
        }
        
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder bulder = null;
        try {
            bulder = factory.newDocumentBuilder();
        } catch (ParserConfigurationException ex6) {
            ex6.printStackTrace();
            System.out.print("невозможно создатьDocumentBuilder ");
        }
        Document doc = null;
        try {
            doc = bulder.parse(new InputSource(new StringReader(sb.toString())));
        } catch (IOException ex7) {
            ex7.printStackTrace();
            System.out.print("IOException ");

        } catch (SAXException ex7){
            ex7.printStackTrace();
            System.out.print("SAXException");
        }
        
        //для проверки 
        System.out.println("Печать:");
        Node ch  = doc.getFirstChild();
        NodeList nl = ch.getChildNodes();
        for(int i = 0; i < nl.getLength(); i++){
            System.out.println(" node = " + nl.item(i).getNodeName());
        }
        try {
            wr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }

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

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

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


 




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


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

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