powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование строки
10 сообщений из 10, страница 1 из 1
Преобразование строки
    #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
Преобразование строки
    #33296171
yuriypalych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй так:
положи полученный xml в сессию, а не в форму.
на jsp получи эту строчку не из формы, а из сессии.

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

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

в общем < заменяется на амперсанд (&) + dt + ;
двойная ковычка заменяется на амперсанд + q + u + o + t + ;
и так далее
даже когда здесь вставляю этот текст, при просмотре автоматически заменяется. а принудительно куда его так запихнуть этот String, чтобы его заменило?????
...
Рейтинг: 0 / 0
Преобразование строки
    #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
Преобразование строки
    #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
Преобразование строки
    #33296633
Who am I
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо :)

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


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