преобразовать рекурсивную структуру в XML с помощью JSP - PullRequest
0 голосов
/ 01 декабря 2009

Допустим, у меня есть рекурсивная структура данных

 class Tree {
      private Tree right;
      private Tree left;
      private int data;
      ....
 }

Я хочу преобразовать его в xml с помощью jsp, чтобы мой виджет дерева пользовательского интерфейса мог загружать страницу xml с помощью Ajax и создавать дерево (с разворачиваемыми / складывающимися узлами и т. Д.).

XML будет выглядеть примерно так:

<tree>
   <tree>
      <data value="5"/>
   </tree
   <tree>
      <data value="1"/>
      <tree>
          <data value="5"/>
      </tree
      <tree>
          <data value="1"/>
      </tree>
   </tree>
</tree>

Может ли такая рекурсивная структура генерироваться с помощью jsp? Как?

Ответы [ 4 ]

3 голосов
/ 01 декабря 2009

Попробуйте это:

class Tree {
     Tree right;
     Tree left;
     int data;

     public String toXmlString(){
        StringBuilder s = new StringBuilder();
        s.append("<tree>");
        s.append("<data value=\"" + data + "\" />");
        if(right != null)
            s.append(right.toXmlString());
        if(left != null)
            s.append(left.toXmlString());
        s.append("</tree>");

        return s.toString();
     }
 }

Некоторое использование:

Tree t = new Tree();
//fill values to tree
....

String xml = t.toXmlString();
1 голос
/ 04 января 2010

Я ненавижу отвечать и принимать свой собственный вопрос, но после рассмотрения остальных, похоже, ответ должен быть:

«Нельзя разумно сделать с JSP».

0 голосов
/ 01 декабря 2009

Хотя я ценю подход StringBuilder, я бы лучше рекомендовал использовать Java API для новичков в XML. Использование StringBuilder намного быстрее, но также подвержено ошибкам. Даже если вы знаете, что делаете, вам следует рассмотреть возможность использования встроенной поддержки javas xml, чтобы не попасть в ловушку кодирования.

0 голосов
/ 01 декабря 2009

Технически, я считаю, что это можно сделать - возможно, с помощью пользовательского тега. Но JSP плохо подходят для рекурсивных алгоритмов.

Используйте сервлет и ваш XML API по выбору (возможно, класс StAX , например XMLStreamWriter ).

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