一般思路:
val link2 = Element("link2") link2.text=">>><<<www.baidu.com" channel.addContent(link2)
结果:
<link2>>>><<<www.baidu.com</link2>
首先很容易联想到使用CDATA()
查看CDATA类的源码
得知CDATA是Text类的子类
继续看Text
得知Text是Content类的子类。
所以继承关系是
CDATA extends Text extends Content
再看Element类的源码
得知Elment类也是Content类的子类
看addConten()方法接收的参数是什么类型
得知addContent()接收的是一个Content对象
所以试试用CDATA类代替Element类
val link = CDATA("link") link.text = ">>><<<<www.baidu.com" channel.addContent(link)
结果
但是少了<link></link>
包裹,而是作为channel的content存在,所以更改代码让其作为<link></link>
的content就行
最终代码:
val link1 = Element("link1") channel.addContent(link1) val content = CDATA("link") content.text = ">>><<<<www.baidu.com" link1.addContent(content) val link2 = Element("link2") link2.text = ">>><<<www.baidu.com" channel.addContent(link2)
最终效果
完整代码
package imooc.write.toxml import org.jdom2.CDATA import org.jdom2.Document import org.jdom2.Element import org.jdom2.output.Format import org.jdom2.output.XMLOutputter import org.junit.Test import java.io.File import java.io.FileOutputStream /** * @author futao * Created on 2017/11/6 - 18:59. * JDOM方式生成xml */ class JDOM { @Test fun xml() { //生成rss根节点 val rss = Element("rss") //给rss节点添加属性值 rss.setAttribute("id", "1") //生成channel节点 val channel = Element("channel") //给rss节点添加channel子节点 rss.addContent(channel) //生成title节点 val title = Element("title") //设置title的内容 title.text = " 我是 title " //把title节点添加到channel的子节点 channel.addContent(title) val link1 = Element("link1") channel.addContent(link1) val content = CDATA("link") content.text = ">>><<<<www.baidu.com" link1.addContent(content) val link2 = Element("link2") link2.text = ">>><<<www.baidu.com" channel.addContent(link2) //生成一个Document对象 val document = Document(rss) //格式化xml,换行和缩进 val prettyFormat = Format.getPrettyFormat() // prettyFormat.escapeStrategy = EscapeStrategy(function = { false }) //取消trim prettyFormat.textMode = Format.TextMode.TRIM_FULL_WHITE //创建XMLOutputter对象 val xmlOutputter = XMLOutputter(prettyFormat) //通过XMLOutputter将Document转换成xml文档 xmlOutputter.output(document, FileOutputStream(File("jdomBooks.xml"))) } }