Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование строки / 10 сообщений из 10, страница 1 из 1
29.09.2005, 12:42
    #33295510
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
Есть js-дерево, которое загружается предварительно из xml. Использую jdom для генерации xml основываясь на данных из БД. У jdom есть XMLOutputter с методом:
Код: plaintext
1.
 void  output(DocType doctype, java.io.OutputStream out) 
и:
Код: plaintext
1.
 void  output(DocType doctype, java.io.Writer out) 

По началу реализовал все в jsp с помощью стандартных <% ... %>:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<%@ page contentType="text/xml;charset=UTF-8" language="java" %>
<%
  XMLOutputter   outp        =  new  XMLOutputter();
  Document       doc         =  new  Document();
  Element        root        =  new  Element("tree").setAttribute("id", "0");
............
  doc.addContent(root);
  outp.output(doc, out);

а потом делал в js:
Код: plaintext
1.
tree.loadXML('xml.jsp');

все работает ок. теперь надо перейти на MVC-модель. сделал action и form. action лезет в БД, создает jdom.Document и делает следующее:
Код: plaintext
1.
2.
        StringWriter str =  new  StringWriter();
        outp.output(doc, str);
затем ложит в form строку, представляющую собой этот xml-файл.
Код: plaintext
1.
        xmlForm.setXml(str.toString());
на странице с деревом делаю следующее:
Код: plaintext
1.
2.
3.
var str = '<bean:write name="xmlForm" property="xml"/>';
...
tree.loadXMLString(str);
происходит ошибка. причина ошибки известна. просмотрел сгенеренный html код страницы. str содержит строку в которой спецсимволы заменяются соответствующими кодами с амперсандом. а для js необходимо чтобы строка просто содержала тэги. при выводе, например, этой же строки из action в System.out все показывается нормально. как лучше поступить? где можно выполнить это преобразование прежде чем строка будет загружена в переменную js?? и как это сделать? или может что-то нужно поменять на другом этапе?
...
Рейтинг: 0 / 0
29.09.2005, 15:20
    #33296171
yuriypalych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
Попробуй так:
положи полученный xml в сессию, а не в форму.
на jsp получи эту строчку не из формы, а из сессии.

может поможет, а может и нет...
...
Рейтинг: 0 / 0
29.09.2005, 16:04
    #33296314
johanna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
какие спецсимволы?
...
Рейтинг: 0 / 0
29.09.2005, 16:06
    #33296324
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
ничего не изменилось. :(
ведь в сессию я ложу не xml, а строку, которую сделал XMLOutputter. именно он ложит ее в таком виде. мне кажется надо произвести какие-то действия со строкой перед тем, как ложить ее. может послать ее куда, а потом забрать оттуда, ну как будто вывел на System.out и прочитал. только вот куда ее так послать? :)
...
Рейтинг: 0 / 0
29.09.2005, 16:22
    #33296384
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
var str = '<?xml version="1.0" encoding="UTF-8"?>'
...
Рейтинг: 0 / 0
29.09.2005, 16:27
    #33296408
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
послал спецсимволы, а форум опять таки сам их конвертнул )
вот исходная строка, которая получается в переменной js:
здесь ; заменена на xx

var str = '&ltxx?xml version=&quotxx1.0&quotxx encoding=&quotxxUTF-8&quotxx?&gtxx
...
Рейтинг: 0 / 0
29.09.2005, 16:31
    #33296422
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
хм. странно. не помогло. :)

в общем < заменяется на амперсанд (&) + dt + ;
двойная ковычка заменяется на амперсанд + q + u + o + t + ;
и так далее
даже когда здесь вставляю этот текст, при просмотре автоматически заменяется. а принудительно куда его так запихнуть этот String, чтобы его заменило?????
...
Рейтинг: 0 / 0
29.09.2005, 17:13
    #33296588
yuriypalych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
    /**
     * Заменяет во входной строке все указанные подстроки на новые.
     * Например,
     * <code>replace("aaa zzz bbb zzz ccc", "zzz", "www")</code>
     * вернет
     * <code>"aaa www bbb www ccc"</code>.
     *
     * <code>replace("Isida Informatica", "zzz", "www")</code>
     * вернет
     * <code>"Isida Informatica"</code> (нет замены).

     * @param srt - входная строка.
     * @param old - подстрока поиска.
     * @param value - подстрока для замены.
     * @return результирующий массив страниц.
     */
     public   static  String replace(String str, String old, String value) {

         if  (str ==  null )  return   null ;

        String result = "";

         int  poz = - 1 ;

         while  ((poz = str.indexOf(old)) != - 1 ) {
            String begin = str.substring( 0 , poz);
            str = str.substring(poz+old.length());

            result = result.concat(begin).concat(value);
        }

         return  result.concat(str);
    }



    /**
     * Возвращает нормализованную xml-строчку.
     *
     * @param xml - xml-строчка.
     * @return нормализованная xml-строчка.
     */
     public   static  String xmlNormalize(String xml) {

         if  (xml ==  null )
             return   null ;

        xml = replace(xml, "&", "&");
        xml = replace(xml, "\"", """);
        xml = replace(xml, "'", "'");
        xml = replace(xml, "<", "<");
        xml = replace(xml, ">", ">");

         return  xml;
    }

...
Рейтинг: 0 / 0
29.09.2005, 17:15
    #33296594
yuriypalych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
у меня тоже заменились )))))))))))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    /**
     * Возвращает нормализованную xml-строчку.
     *
     * @param xml - xml-строчка.
     * @return нормализованная xml-строчка.
     */
     public   static  String xmlNormalize(String xml) {

         if  (xml ==  null )
             return   null ;

        xml = replace(xml, "&", "&amp ;");
        xml = replace(xml, "\"", "&quot ;");
        xml = replace(xml, "'", "&apos ;");
        xml = replace(xml, "<", "&lt ;");
        xml = replace(xml, ">", "&gt ;");

         return  xml;
    }

...
Рейтинг: 0 / 0
29.09.2005, 17:30
    #33296633
Who am I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование строки
спасибо :)

[DeNik]
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование строки / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]