构建混合 text/tag 元素

Constructing mixed text/tag element

我正在尝试将一些在 StringBuilder 中构建 XML 的代码转换为使用 dom4j。

部分代码正在生成类似于以下结构的内容:

<foo myattribute="bar">i am some text<aninnertag>false</aninnertag> 
(more text specific stuff <atag>woot</atag>) 
and (another section <atag>woot again</atag> etc)
</foo>

我正在尝试找出如何在 dom4j 中构建它。我可以为内部标签添加元素,但它不会在有意义的上下文中生成它。我可以将其全部添加为文本,但标签会被转义。

如何在 dom4j 中实现这样的功能?有可能吗?

这个xml太糟糕了,我无法改变。

这在输出方面显然是不正确的,但是一个基本的例子:

Element foo = new DefaultElement("foo");
foo.addText("i am some text" + "(more text specific stuff " + ")" + "and (another section "+ " etc)");
foo.addElement("aninnertag").addText("false");
foo.addElement("atag").addText("woot");
foo.addElement("atag").addText("woot again");

当您编写一个 addText() 后接三个 addElement() 调用时,您将获得一个 XML 内容,其中文本位于开头,而 XML 元素位于结束。您必须像这样交错 addText()addElement() 调用:

Element foo = new DefaultElement("foo");
foo.addAttribute("myattribute", "bar");
foo.addText("i am some text");
foo.addElement("aninnertag").addText("false");
foo.addText("(more text specific stuff ");
foo.addElement("atag").addText("woot");
foo.addText(") and (another section ");
foo.addElement("atag").addText("woot again");
foo.addText(" etc)");
System.out.println(foo.asXML());

这将生成以下输出:

<foo myattribute="bar">i am some text<aninnertag>false</aninnertag>
(more text specific stuff <atag>woot</atag>) and (another section
<atag>woot again</atag> etc)</foo>