2014-02-20 56 views
1

我有這樣的代碼從HTML網頁加載XML:如何處理Scala XML中的口音?

import scala.xml._ 
import scala.xml.factory.XMLLoader 
import scala.xml.parsing.NoBindingFactoryAdapter 
import org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl 

object XmlUtils { 
    def load(s: String) = { 
    val adapter = new NoBindingFactoryAdapter 
    val factory = (new SAXFactoryImpl()) 
    val loader = XML.withSAXParser(factory.newSAXParser()) 
    scala.xml.Utility.trim(loader.loadString(s)) 
    }: Node 
} 

的代碼加載XML以及除&Xaccute;符號表示爲'?'在終端輸出。

我是Java環境和Scala的新手,所以我很迷茫。

我該如何解決這個問題?

-----更多信息

我使用的調度通過HTTP來獲取HTML

URL(_url)<:< mapHeaders(頭)

的環境我運行的程序是阿卡,我用簡單的println來輸出數據

T他是一個簡單的例子了阿卡框架:

val s = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><HTML><HEAD></HEAD><BODY>&aacute;</BODY></HTML>" 
val xml = XmlUtils.load(s) 
println(xml.text) 

輸出: ?

+0

向我們展示XML及其如何讀入String's'。 – 2014-02-20 20:58:56

+0

@LutzHorn我使用調度庫: url(_url)<:

+0

我懷疑你的問題是顯示的東西,而不是閱讀它們,所以你應該解釋你如何顯示它們,幷包括平臺您正在使用。 –

回答

1

我調整你的代碼一點點,但它本質上是相同的:

package scratch 

import scala.xml._ 
import scala.xml.factory.XMLLoader 
import scala.xml.parsing.NoBindingFactoryAdapter 
import org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl 

object XmlUtils { 
    def load(s: String) = { 
    val adapter = new NoBindingFactoryAdapter 
    val factory = (new SAXFactoryImpl()) 
    val loader = XML.withSAXParser(factory.newSAXParser()) 
    val node = scala.xml.Utility.trim(loader.loadString(s)) 

    node 
    }: Node 

    def main(args: Array[String]) { 

    val s = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><HTML><HEAD></HEAD><BODY>&aacute;</BODY></HTML>" 
    val xml = XmlUtils.load(s) 
    println(xml.text) 
    } 
} 

...和將Eclipse中的「資源 - >文本文件編碼」項目設置更改爲「UTF-8」,現在它在OS/X 10.9.1上的控制檯中生成如下輸出:

$ scala -classpath .:../lib/tagsoup-1.2.1.jar scratch.XmlUtils 
á 

我懷疑項目設置對應於將-encoding選項傳遞給scalac。

+0

我已經添加了導入:) –

+0

謝謝 - 我已經更新了我的文章,並提供了完整的答案。 – richj

+0

爲了將來的參考,TagSoup庫在這裏可用:http://home.ccil.org/~cowan/XML/tagsoup/ – richj