如何处理Scala XML中的重音?

时间:2014-02-20 20:39:21

标签: xml scala sax

我有这段代码从HTML网页加载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的新手,所以我很丢失。

我该如何解决?

-----更多信息

我正在使用Dispatch通过HTTP获取HTML

  

url(_url)<:< mapHeaders(头)

我正在运行该程序的环境是Akka,我使用简单的println来输出数据

这是Akka框架中的一个简单示例:

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)

输出: ?

1 个答案:

答案 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中的“Resource-&gt; Text File Encoding”项目设置更改为“UTF-8”,现在它在OS / X 10.9.1的控制台中生成这样的输出:

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

我怀疑项目设置对应于将-encoding选项传递给scalac。