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