Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2011, 13:56   #1
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию Вывод XML-файла на экран

Добрый день. Есть такая задача вывести содержимое xml-файла на экран. Вот какой код получился:
Код:
<%@ page contentType="text/html; charset=windows-1251" %>
<%@ page import="java.io.*, java.io.DataInputStream, java.io.bufferedreader.*, java.io.bufferedwriter.*" %>
<%
	String contentType = request.getContentType();
	request.setCharacterEncoding("windows-1251");
	response.setCharacterEncoding("windows-1251");
	response.setContentType("text/html");
	
	if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) 
    {
		String thisLine;
		String temp_line;
		temp_line="";
		BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
		
		while ((thisLine = br.readLine()) != null) 
		{ 
			temp_line= temp_line+" "+thisLine; 
		}	
	
		out.print(temp_line);
		/*FileOutputStream fos; 
		fos = new FileOutputStream("C:\\tomcat\\webapps\\prak\\temp.txt"); 
		fos.write(temp_line);
		fos.close();*/
	
    }
%>
Но работает не так как хотелось бы, да он выводит содержимое но без xml-заголовков.
К примеру:
1. содержимое файла: <id>2</id>
<name>1C</name>
2. на экран: 2 1C
А нуждно чтобы вывелось, тоже что и в файле.
Как это сделать?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 27.01.2011, 16:08   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

я тут не вижу ни попыток чтения xml-файла, ни попыток создания xml документа.
только сбор данных прямо из запроса в виде бинарных данных.

что касаемо отображения xml в браузерах (без контент-тайпа, невалидных, без таблиц стилей) - если бразуер встречает неизвестные ему теги, он отображает только их содержимое.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.

Последний раз редактировалось alexinspir; 27.01.2011 в 20:16.
alexinspir вне форума Ответить с цитированием
Старый 27.01.2011, 16:44   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

получилось вот так считать в файл:
Код:
<%@ page import="java.util.* , java.io.*, java.io.DataInputStream,java.io.*,  java.io.bufferedreader.*, javax.xml.*" %>
<%@ page import="javax.xml.parsers.DocumentBuilderFactory, javax.xml.parsers.DocumentBuilder,org.w3c.dom.*" %>
<%
    String contentType = request.getContentType();
	 
	request.setCharacterEncoding("windows-1251");
	response.setCharacterEncoding("windows-1251");
	response.setContentType("text/html");

     if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) 
    {
        String thisLine;
        File f2 = new File("C:\\tomcat\\webapps\\prak\\temp.xml");
        OutputStream out_ = new FileOutputStream(f2);

        InputStream in =  new BufferedInputStream(request.getInputStream());      
        byte[] buf = new byte[request.getContentLength()];
        int len = request.getContentLength();
        int offset = 0;  
        while (offset < len)
        {
            int read = in.read(buf, offset, buf.length - offset);
            if (read < 0) 
			{
				break;
            }
				offset += read;
				out_.write(buf, 0, read);
        }
        in.close();
        out_.close();
    }
%>
<body>
</body>
Но считывает косовато когда большой файл идет до определенного места и начинает считывать снова.
Цитата:
что касаемо отображения xml в браузерах (невалидных, без таблиц стилей) - если бразуер встречает неизвестные ему теги, он отображает только их содержимое.
Можно подробнее. Как вывести содерхимое xml вместе с тегами на страницу браузера? У меня opera открывает файл с этими тегами, просто сверху пишет This document had no style information.
Единственное, что ограничивает полет мысли программиста-компилятор

Последний раз редактировалось alexinspir; 28.01.2011 в 23:10. Причина: большой импорт, укоротил
Sparky вне форума Ответить с цитированием
Старый 27.01.2011, 20:12   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

HttpServletResponse.addHeader( "Content-Type", "text/xml");
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 28.01.2011, 09:01   #5
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

получилось это
Код:
<%@ page import="java.util.* , java.io.*, java.io.DataInputStream,java.io.*,  java.io.bufferedreader.*, javax.xml.*, javax.xml.parsers.DocumentBuilderFactory, javax.xml.parsers.DocumentBuilder,org.w3c.dom.*" %>
<%
     
    String contentType = request.getContentType();

    request.setCharacterEncoding("windows-1251");
    response.setCharacterEncoding("windows-1251");
    response.setContentType("text/html");
     
    if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) 
    {
        String thisLine;
        File f2 = new File("C:\\tomcat\\webapps\\prak\\temp.txt");
		File f3 = new File("C:\\tomcat\\webapps\\prak\\temp1.txt");
		OutputStream out_ = new FileOutputStream(f2);
		OutputStream out2_ = new FileOutputStream(f3);

		InputStream in =  new BufferedInputStream(request.getInputStream());
        byte[] buf = new byte[1024];
          
		int len = request.getContentLength();
		int offset = 0;
		int read = 0;
		String input = "", extracted="";
          
		while ((read = in.read( buf)) != -1)
		{
			input += new String(buf);
			out_.write(buf, 0, read);
		}
		out.print(input.length());
		extracted = input.substring(input.indexOf("<"),input.lastIndexOf("-"));
		out.print(" ");
		out.print(extracted.length());
		/*out.print(" ");
		out.print(extracted);*/
		byte[] theByteArray = extracted.getBytes();
		out2_.write(theByteArray);
		in.close();
		out2_.close();
        out_.close();
    }
%>
<body>
</body>
Вот только temp оличается от temp1. В temp1 добавляется лишняя инфа. как исправить?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 28.01.2011, 10:31   #6
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

вот что получилось:
Код:
<%@ page import="java.util.* , java.io.*, java.io.DataInputStream,java.io.*,  java.io.bufferedreader.*, javax.xml.*, javax.xml.parsers.DocumentBuilderFactory, javax.xml.parsers.DocumentBuilder,org.w3c.dom.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%
     
    String contentType = request.getContentType();

    request.setCharacterEncoding("windows-1251");
    response.setCharacterEncoding("windows-1251");
    response.setContentType("text/html");
     
     if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) 
     {
          String thisLine;
          File f2 = new File("C:\\tomcat\\webapps\\prak\\temp.xml");
          File f3 = new File("C:\\tomcat\\webapps\\prak\\temp1.xml");
          OutputStream out_ = new FileOutputStream(f2);
          OutputStream out2_ = new FileOutputStream(f3);

          InputStream in =  new BufferedInputStream(request.getInputStream());
          
          
          
          byte[] buf = new byte[request.getContentLength()];
          
          int offset = 0;
          int read = 0;
          String input = "", extracted;
          
          while ((read = in.read( buf)) != -1)
          {
		  
               String k = new String(buf,0,read,"windows-1251");
               input = input + k;
               out_.write(buf, 0, read);
          }
          extracted = input.substring(input.indexOf("<"),input.indexOf("-----",1000));
			out.print(extracted);
          byte[] theByteArray = extracted.getBytes();

          FileWriter fw = new FileWriter("C:\\tomcat\\webapps\\prak\\temp1.xml");
          fw.write(extracted);
          fw.close();
          in.close();

          out_.close();
     }
%>
<body>
</body>
уже вроде и работает почти все, вот только не правильно отбражает одну букву и. как исправить?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 28.01.2011, 11:28   #7
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Уважаемый, прежде чем работать с технологиями разберитесь пожалуйста для чего они нужны, а также грамотно писать код.

для загрузки и сохранения xml используют апи языка, но никак не ручной парсинг. see

еще я не понял зачем используется бинарный поток для доступа к данным, в то время как вам доступны ВСЕ параметры/хидеры/куки и тд через соответствующие методы. see
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод содержимого файла на экран! Nostalgy Общие вопросы C/C++ 5 16.01.2011 19:33
Вывод данных из txt файла на экран (си++) Skrydlov Помощь студентам 0 26.12.2010 21:13
Вывод на экран текста из файла Snegovic Помощь студентам 4 16.09.2010 08:08
вывод файла на экран! Шушелла Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 29.10.2007 09:34