我一直在尝试使用Scala和XML,我发现使用XML.load(或loadString)创建的XML标记与将其写为文字之间在行为上存在奇怪的差异。这是代码:importscala.xml._//creatingaclassicallinkHTMLtagvalin_xml=//ThesameasaStringvalin_str=""""""//ConverttheStringintoXMLvalfrom_str=XML.loadString(in_str)println("in_xml:"+in_xml)println("from_str:"+from_str)println("val_
我有一个字符串列表,我需要用标签将它们连接在一起。所以从:vallist=List("line1","line2","line3")我需要以一个NodeSeq结束:line1line2line3列表可能只包含一个元素,在这种情况下,我应该以Text("line1")的NodeSeq结尾。是否有使用列表中高阶函数之一的单行代码来执行此操作?我试过使用foldLeft,但似乎无法让它做我想做的事。 最佳答案 list.map(scala.xml.Text(_):scala.xml.NodeSeq).reduce(_++++_)请注意,我
我有一个非常大的xml(>10mb大小和40多个元素)。目前我们将此类xml存储在Oracle数据库中,并使用xquery查询和检索部分xml。这个过程很慢并且需要很多数据库调用。我们正在探索mongodb来存储这个xml并查询它。我刚刚将xml转换为json并加载到一个mongo集合中,它在一瞬间存储了巨大的json数据。并将xml节点存储为嵌套文档。但是当我查询(使用查找)最里面的元素时,它总是返回整个文档,其中还包含具有不匹配元素值的节点。我希望只有少数节点与给定的节点值匹配。让我知道是否有任何最佳方法可以将如此大的xml文件存储在mongodb中。并且还让我知道如何检索具有查询
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