任务:HTML-Scala中的解析器。我对Scala很陌生。到目前为止:我已经用Scala编写了一个小的解析器来解析一个随机的html文档。importscala.xml.Elemimportscala.xml.Nodeimportscala.collection.mutable.Queueimportscala.xml.Textimportscala.xml.PrettyPrinterobjectReader{defloadXML={valparserFactory=neworg.ccil.cowan.tagsoup.jaxp.SAXFactoryImplvalparser=pars
我一直在处理一些XML,我注意到当scala.xml.Node遇到值为空字符串的属性时,我看到了两种不同的行为。例如,使用Scala2.10.3:scala>valtest1=test1:scala.xml.Elem=scala>scala.xml.XML.save("test1.xml",test1)scala>valtest2=scala.xml.XML.loadFile("test1.xml")test2:scala.xml.Elem=scala>test1==test2res1:Boolean=true我有两个节点(从技术上讲,它们是元素),除了属性顺序外,它们看起来完全相同。
问题1)我正在尝试从Scala中的YQL中提取货币。下面提到的getXML获取其余URL并返回xml节点。在我的主要代码中,我想再次调用getXML以防在10000毫秒的sleep后发生故障。请告知如何实现,因为当我尝试在失败代码中创建getXML时未编译。defgetXML(url:String):Try[scala.xml.Node]={Try(XML.loadString(Source.fromURL(newURL(url)).mkString))}valnodes=getXML(ccyurl)match{caseSuccess(node)=>nodecaseFailure(f)
我有这样一个文件:1,MessiDon'tforgetmethisweekend!2,RonaldoDon'tforgetLaliga3,NeymarIamthebest4,SuarezDon'tforgetmethisweekend!其中第一个字段是id,第二个字段是数据。我需要将它加载到一个RDD,解析xml字符串并提取字段,然后像这样创建另一个RDD:1,Messi,Don'tforgetmethisweekend!2,Ronaldo,Don'tforgetLaliga3,Neymar,Iamthebest4,Suarez,Don'tforgetmethisweekend!由于实
我希望以下代码生成具有以下内容的XML值:编译器报错scala>importscala.xml._importscala.xml._scala>valx:Int=10x:Int=10scala>:8:error:overloadedmethodconstructorUnprefixedAttributewithalternatives(String,Option[Seq[scala.xml.Node]],scala.xml.MetaData)scala.xml.UnprefixedAttribute(String,String,scala.xml.MetaData)scala.xml.
对于这样的XML片段:valfruits=appleredbananayellowbananagreenapplegreen做类似的事情:fruits\\"fruit"将返回一个scala.xml.NodeSeq类型的序列,其中包含所有水果和子节点。我怎样才能限制这个序列只包含里面有“香蕉”的水果元素。即,我希望结果是:bananayellowbananagreen 最佳答案 (fruits\\"fruit").filter(x=>//filterthesequenceoffruits(x\\"name")//findnamenod
我有一个XML文件,其中包含如下所示的数百条消息,表示汽车在检查站的通过时间。我是Scala的新手,但是根据我一直在阅读的内容,有一种简单的方法(即,几行代码)来解析它并将其存储到Car对象属性中,例如ID(“数字”在rat:st标签中)和检查点列表(“pbpData”行,每行由一个节点ID和两个时间变量标识)。此外,您是否认为有一种方法可以将这些时间以YYYY-MM-DDThh:mm:ss格式保存,并将Scala作为Date属性?我四处寻找,但只找到了tutorial对于更改Java中的日期/时间格式,这只是真正解释了如何更改日期的显示方式,而我希望做相反的事情:将这个有趣的日期/时
xml是否有匹配以下模式的值?xmlmatch{case{x}=>42} 最佳答案 是的。scala>valx=33x:Int=33scala>valxml={x}xml:scala.xml.Elem=33scala>xmlmatch{case{x}=>42}res0:Int=42我认为您的困惑来自于它与33不匹配scala>33match{case{x}=>42}scala.MatchError:33(ofclassscala.xml.Elem)这是因为当你使用{},scala为{}前后的空格插入额外的元素,所以你得到三个元素,而
我在Scala中使用XML,在具有有限内存资源的系统中解析可以达到~20MB的文件。我必须读取整个文件,并且必须从中提取所有数据。更具体地说,我必须读取的节点具有有限的属性和值。我想知道在性能方面最好的方法是什么(或者两者是否具有相同的性能)。我问这个是因为我不知道Scala如何处理它的XML库,而且我可能会遗漏一些细节。第一种方法deffirstApproach(root:Elem)=for{nif(node\"@attr").text=="type1"=>//dosomething//hereotherpossiblecases->type2,type3}第二种方法defsecon
我希望能够将XML文件通过管道传输到程序中,并使用XMLEventReader读取它。我能为XMLEventReader找到的唯一构造函数将Source作为参数,但scala.io.StdIn不是Source而且我找不到任何方法将它变成Source。可以做到吗?如果可以,怎么做? 最佳答案 您可以使用java.lang.System.in作为InputStream或scala.Console.in作为BufferedReader。更喜欢后者,因为它可以在测试中轻松修改(使用Console.withIn)。importjavax.xm