Java, dom4j: как добавить встроенный элемент (b, i, u) в середине текста

Я думал, что это достаточно важно. Я должен быть в состоянии сделать этот вид XML:

    <root>
     <text>I am <b>text</b>, alright?</text>
    </root>

Мой вопрос прост: как я могу сделать этот встроенный элемент (b, i, u) в середине текста, используя dom4j, или я должен использовать альтернативный способ при создании такого типа встроенных элементов?

Для меня очевидно, что это не сработает:

    Element e = rootelem.addElement("text");
    e.addElement("b").setText("text");

Кто-нибудь? Пожалуйста, скажи мне, как... Это сводит меня с ума.:D

1 ответ

Решение

Это просто. Просто не используйте setText,

Существует различие между "установкой текстового значения узла" (которое уничтожает весь другой контент, который будет иметь узел) и "добавлением текстового узла к узлу" (что позволяет смешивать текстовые узлы с другими типами узлов).

использование addText для последнего.

Element text = rootelem.addElement("text");

text.addText("I am ");
text.addElement("b").addText("text");
text.addText(", alright?");

Интерфейс Elementметод addText: Добавляет новый текстовый узел с данным текстом к этому элементу.


Как в стороне, называя элемент <text> когда на самом деле он вообще не содержит текста (но разметка) немного неудачно. Может быть что-то вроде <html> был бы более мудрый выбор.

Другие вопросы по тегам