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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Показать пользователю XML код 
:(
    Опции темы
_Y_
Дата 12.4.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

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



Имеется XML документ (org.w3c.dom.Document). Хотелось бы показать его пользователю в первозданном виде - со всеми тэгами и т.п.  Примерно так, как его показывает IE при открытии XML файла.

Имеются ли стандартные средства, чтобы это сделать? Ну, например, как JLabel показыает HTML код?

Подвопрос этого же вопроса: а можно ли отобразить не весь документ, а только его часть? Например один Element со всеми дочерними Element-ами?

ЗЫ: вроде видел подобную тему когда-то давно. Но найти не смог.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
fixxer
Дата 12.4.2010, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А если зачитать DOM и отобразить его в JTree?


--------------------
user posted image
PM MAIL ICQ   Вверх
_Y_
Дата 12.4.2010, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

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



Цитата(fixxer @ 12.4.2010,  14:10)
А если зачитать DOM и отобразить его в JTree?

Это как? Этого я тоже не знаю.

Я вот решил проблему таким примерно образом; т.е. создав свой OutputStream собирающий весь документ в одну String:
Код

import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;

@SuppressWarnings("serial")
public class Temp extends JFrame {

    public Temp() throws IOException, ParserConfigurationException {

        // Create some document

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = dbf.newDocumentBuilder();
        Document document = builder.newDocument();
        Element rootElement = document.createElement("root");
        document.appendChild(rootElement);
        Element subElement = document.createElement("sub1");
        subElement.setTextContent("text 1");
        rootElement.appendChild(subElement);
        subElement = document.createElement("sub2");
        subElement.setTextContent("text 2");
        rootElement.appendChild(subElement);

        // Process the document

        OutputFormat format = new OutputFormat(document);
        format.setIndenting(true);
        format.setEncoding("UTF-8");

        OutputStream outputStream = new StringOutputStream();
        XMLSerializer serializer = new XMLSerializer(outputStream, format);
        serializer.serialize(document);

        // Show the result

        JTextArea textArea = new JTextArea(outputStream.toString());
        this.add(textArea);

        this.setSize(400, 300);
        this.setVisible(true);

    }

    private class StringOutputStream extends OutputStream {

        private ArrayList<Byte> bytes = new ArrayList<Byte>();

        @Override
        public void write(int arg0) throws IOException {
            bytes.add((byte) arg0);
        }

        public String toString() {
            byte[] byteArr = new byte[bytes.size()];
            for (int i = 0; i < bytes.size(); i++)
                byteArr[i] = bytes.get(i);
            return new String(byteArr, Charset.availableCharsets().get(
                    Charset.availableCharsets().firstKey()));
        }
    }

    public static void main(String args[]) {
        try {
            new Temp();
            return;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
    }

}

Но стойкое подозрение, что это решение через ...., а если культурно, подозреваю, что изобрел велосипед.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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