2012-01-22 55 views
8

首先:如何用scala.xml添加xml文檔信息?

  • 我知道抗XML和尺度,但我想用標準scala.xml
  • 我更喜歡使用明確的方法來構建XML文檔,不隱XML語法建成斯卡拉

好了,我有這樣一段代碼:

val text = new scala.xml.Text("just a text") 
val root = new scala.xml.Elem(null,"element",null,scala.xml.TopScope,text) 
val doc = new scala.xml.Document() 
doc.docElem = root 
println(doc.toString()) 

差不多好了,但作爲結果,我得到:

<element>just a text</element> 

,我想獲得XML頭太像:

<?xml version="1.0"?> 
<element>just a text</element> 

問題:如何添加呢?

當然以常識的方式,而不是一些黑客與額外逐字println與頭;-)。

+1

您使用的是真棒語言比如Scala,你可以說'VAL XML = 輸入'和你不喜歡的? ;)它的okey,因爲它是你的選擇,但你能告訴我爲什麼使用「其他方式」更好? – OverStack

+0

@OverStack,因爲這個功能實際上是一個缺陷。來自我的話,任何錯別字都很脆弱,所以直到它咬住你纔會看到你的錯誤。第二件事 - 這件事存在的事實,並不意味着你應該使用它。來自其他人的單詞:http://www.codecommit.com/blog/scala/working-with-scalas-xml-support並且VB中有一段關於HTML的內容,但我現在找不到它。 – greenoldman

+0

@greenoldman只是我或你的代碼給了一個空指針異常? –

回答

7

我發現的唯一的解決辦法是添加以下代碼

val writer : PrintWriter = new PrintWriter(System.out) 
XML.write(writer,root,"utf-8",true,null) 
writer.flush() 
+0

非常感謝你,奇怪的是scala.xml沒有更直接的東西。 – greenoldman

+0

還有一件事 - 使用'StringWriter'比'PrinterWriter'更有用(因爲這樣可以非常容易地將輸出xml作爲字符串)。 – greenoldman