Обработка элементов Jdom - PullRequest
       8

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

0 голосов
/ 19 декабря 2011

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

1 Ответ

0 голосов
/ 28 декабря 2011

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

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();
}
...