一般思路:
val link2 = Element("link2")
link2.text=">>><<<www.baidu.com"
channel.addContent(link2)
結果:
<link2>>>><<<www.baidu.com</link2>
首先很容易聯想到使用CDATA()
檢視CDATA類的源碼
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuImN3ImZ4QzY3QWN0QWYlhTOjJzN0E2N0AjN0ATYmBjMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
image.png
得知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")))
}
}