scala.io.Sourceã¨scala.xml.parsing.XhtmlParser
scalaã§ãã¡ã¤ã«ãURLããããã¹ããèªã¿è¾¼ã¿ããã¨ãã«ã¯ãscala.io.Sourceオブジェクトã¨scala.io.Sourceクラスãå©ç¨ããã®ã便å©ã§ãã
scala.io.Sourceãªãã¸ã§ã¯ããå©ç¨ããã¨ãã¡ã¤ã«ããã®æååã®èªè¾¼ããURLãããã§ããããå¦çã¯ãããªãµãã«ç°¡åã«æ¸ãã¾ãã
import scala.io.Source import scala.xml.XML import scala.xml.parsing.{ConstructingParser,XhtmlParser} // textãã¡ã¤ã«ããèªã¿è¾¼ãã§åºå Source.fromFile("test.txt","UTF-8").foreach(print) // URLããXMLãåå¾(twitterã®xml) val src = scala.io.Source.fromURL("http://twitter.com/statuses/user_timeline/yuroyoro.xml";) val xml = cpa.document() // ã¤ã¶ããã表示 (xml \\ "statuses" \ "status" \ "text").foreach( t => println( t.text )) // URLã®ãã¡ã¤ã«ãXHTMLã¨ãã¦èªã¿è¾¼ãã§scala.xml.NodeSeqã使 val xhtml = XhtmlParser( Source.fromURL("http://www.scala-lang.org/docu/files/api/scala/io/Source.html") ) // titleã¿ã°ãæ½åº xhtml \\ "title"
scala.xml.XMLã¨ãã便å©ãªãã¸ã§ã¯ãããã£ã¦ãããã¯InputStreamãæååããxmlãæ§ç¯ãã¦ããã¾ãããã ãSourceãªãã¸ã§ã¯ãããxmlãæ§ç¯ããã¡ã½ããã ããªãããªãã®ã§ãã
Sourceããxmlãparseããã«ã¯scala.xml.parsing.ConstructingParserã§å¯è½ã§ãã
対象ãxmlã§ã¯ãªãxhtmlãªãã°ãscala.xml.parsing.XhtmlParserã§parseå¯è½ã§ãããã ããã¿ã°ã®éãå¿ããªã©well-formedãªxmlãããªãã¨å½ç¶ã¨ã©ã¼ã«ãªãã¾ããã
scala.io.Sourceã¯ã¨ã£ã¦ã便å©ã§ãããæ³¨æããªããã°ãªããªããã¨ãããã¾ãã
Streamã®closeã¯èªåçã«è¡ãããªã
ããã¯ã¨ã£ã¨ãã¤ã¿ã¤ã§ãã
ã¡ãã£ã¨ããã¹ã¯ãªããã§ãã¡ã¤ã«ãèªã¿è¾¼ãããããªãããã§ããã©ãããç¨åº¦ã®è¦æ¨¡ã®ããã°ã©ã ã§Sourceãªãã¸ã§ã¯ãã§ãã¡ã¤ã«ãèªã¿è¾¼ã¿ã¾ããã¨ããã®ãã¡java.nio.BufferOverflowExceptionãthrowããã¦ãã¾ãã¾ãã
æç¤ºçã«closeãã¦ãããã°ãããã§ãããæ®å¿µãªããscala.io.Sourceã¯ã©ã¹ã«ã¯closeã¡ã½ãããããã¾ãã(!?)
ã§ã¯ã©ããããã¨ããã¨ãこちらのコメント欄ã«ããããã«ãjava.io.InputStreamãã Source.fromInputStreamã使ã£ã¦èªã¿è¾¼ãã ãã¨ãInputStreamãcloseããããSourceãBufferedSourceã«ãã£ã¹ããã¦closeãããããªãã§ã(BufferedSourceã«ã¯closeãããã¾ã)ã
// InputStreamã使ãå ´å val in = new FileInputStream("test.txt") try { for(line <- Source.fromInputStream(in).getLines){ println(line) } }finally{ in.close } // ãã£ã¹ãããå ´å val src = source( path ) try{ XhtmlParser(src) }finally{ src.asInstanceOf[BufferedSource].close }
追è¨:
scala.io.Sourceã®ãã¡ãå æ¸ã¨ã©ããããã£ã¦è°è«ãããã§ããã¦ããããã
http://www.nabble.com/feedback-on-scala.io.Source-tc24940271.html