一般思路:
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")))
}
}