我有一个字符串列表,我需要用标签将它们连接在一起。所以从:vallist=List("line1","line2","line3")我需要以一个NodeSeq结束:line1line2line3列表可能只包含一个元素,在这种情况下,我应该以Text("line1")的NodeSeq结尾。是否有使用列表中高阶函数之一的单行代码来执行此操作?我试过使用foldLeft,但似乎无法让它做我想做的事。 最佳答案 list.map(scala.xml.Text(_):scala.xml.NodeSeq).reduce(_++++_)请注意,我
valname="mike"valxml={name}xml将为mike但是如果我想要xml是{name}怎么办?,不转换{name}? 最佳答案 你可以通过加倍来避开花括号valxml={{name}}给你{name} 关于xml-如何在scala的xml中输出{name},而不是转换它?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3336795/
我不熟悉ScalaXML库。有没有一种简单的方法可以找到文档的DTD?据我目前所见,scala.xml.XML.load仅返回Elem(文档的XML内容),但不是DTD。是否有另一种方法可以专门做到这一点?额外问题:文档开头的XML声明的相同问题。 最佳答案 要获取完整文档,您需要使用ConstructingParser,像这样:valcpa=scala.xml.parsing.ConstructingParser.fromSource(src,false)valdoc=cpa.document()valdtd=doc.dtddtd
要使用第3方库,我需要一个w3cDOM文档。但是,在Scala中创建xml节点更容易。所以我正在寻找一种将scalaxml元素转换为w3cdom的方法。显然,我可以序列化为一个字符串并对其进行解析,但我正在寻找性能更高的东西。 最佳答案 这是您可以构建的简单(无命名空间)版本。应该给出思路。只需将doc.createFoo(...)调用替换为等效的doc.createFooNS(...)调用即可。此外,可能需要更智能地处理属性。但是,这应该适用于简单的任务。objectScalaDom{importscala.xml._import
作为一名Java程序员,我对使用JAXB和类似工具感到很自在,例如从XML规范构造对象。我确定我可以让JAXB在scala中很好地工作,但我想知道如果这是scala的方式,或者如果有一些更好/更聪明的方式,特别是因为XML几乎是语言/它的内部库。所以,鉴于我想创建一组对象形式的XML规范,在Scala中推荐的方法是什么? 最佳答案 对于纯Scala,有scalaxb.它基于Scala解析器组合器生成案例类和解析器。它还很年轻,但如果您避开XMLSchema的高级功能,它就非常有用。 关于
我想选择名为“a”的节点的第一个子元素。我现在得到的是:(xml\"a")(0).child.collect{casee:Elem=>e}这很冗长。我在寻找类似的东西:xml\"a"\"*"这在Scala中可行吗? 最佳答案 您不能对NodeSeq上的现有\或\\方法执行任何操作。但是您可以使用新的\*方法扩展NodeSeq(注意缺少或空格字符),按照pimp-your-library模式:importxml.{NodeSeq,Elem}classChildSelectable(ns:NodeSeq){def\*=nsflatMap
阅读Scala2.11.0-RC1的发行说明,我注意到从2.11系列开始将scalaxml拆分到一个单独的jar。这会影响xml文字的使用,在2.11或后续版本中吗?显然,如果您使用xml文字,您还需要scalaxmljar——我想知道是否也有计划弃用xml文字。顺便说一句,我觉得Scala对XML的支持被认为是一个错误。作为一名语言用户,我当然对文字和插值的支持感到非常高兴。我发现MetaData和UnprefixedAttribute在处理属性方面有些笨拙,但并不可怕。scalaxml的主要问题是什么? 最佳答案 有athrea
首先:我知道反xml和缩放,但我想使用标准的scala.xml我更喜欢使用显式方法构建xml文档,而不是使用Scala中内置的隐式xml语法好的,所以我有这样一段代码:valtext=newscala.xml.Text("justatext")valroot=newscala.xml.Elem(null,"element",null,scala.xml.TopScope,text)valdoc=newscala.xml.Document()doc.docElem=rootprintln(doc.toString())几乎不错,但结果我得到:justatext我也想获取XMLheader
我正在尝试使用以下代码将文件读取为xml:importscala.xml._objectHebrewToEnglishCityTranslator{valdata=XML.loadFile("cities_hebrew_utf.xml");for(valentry但是,我的文件是用UTF-8(希伯来字符)编码的,XML编码是valencoding="ISO-8859-1"我该怎么办? 最佳答案 您应该使用XML.load(reader:java.io.Reader),它允许您指定文件编码:XML.load(newjava.io.In
我在Nabble上看到了下面的例子,其目标是返回所有包含id为X且包含值Y的属性的节点://findallnodeswithanattribute"class"thatcontainsthevalue"test"valxml=XML.loadString("""hellohello""")defattributeEquals(name:String,value:String)(node:Node)={node.attribute(name).filter(_==value).isDefined}valtestResults=(xml\\"_").filter(attributeEqua