Обработка элемента Jdom

Можно ли как-то вложить элемент в другой, если у родителя есть какой-то текст с jdom? То, что я ищу, это что-то вроде <p> text <str>bold text</str> text </p>. Я могу создать новый элемент с именем <p>, а затем с помощью .addContent я могу добавить под ним элемент <strong>, но как я могу это сделать, если в элементе <p> есть какой-то текст. Спасибо.


person Halufolia    schedule 19.12.2011    source источник


Ответы (1)


Вам нужно получить и удалить исходный текст, определить область, которую следует выделить, разделить исходную строку вокруг этой области, добавить префикс (если есть), создать и добавить элемент («сильный») и установить его текст в регион и, наконец, добавьте суффикс (если есть).

public static void main(String[] args) throws Exception {
    Element p = new Element("p");
    p.setText("Some bold text");
    print(p);
    List<Content> parts = split(p.getText());
    p.removeContent();
    p.addContent(parts);
    print(p);
}

static List<Content> split(String s) {
    List<Content> result = new LinkedList<Content>();
    String bold = "bold";
    int i = s.indexOf(bold);
    if (i != -1) {
        result.add(new Text(s.substring(0, i)));
        result.add(new Element("strong").setText(bold));
        result.add(new Text(s.substring(i+bold.length())));
    } else {
        result.add(new Text(s));
    }
    return result;
}

static void print(Element e) throws IOException {
    new XMLOutputter().output(e, System.out);
    System.out.println();
}
person forty-two    schedule 28.12.2011