草庐IT

rx-scala

全部标签

xml - Scala:修改一个NodeSeq

我有一个像这样的NodeSeq:foobarBlahblahblahbarfoo我想为所有bar添加一个新属性的属性。我目前正在做:valrule=newRewriteRule(){overridedeftransform(node:Node):Seq[Node]={nodematch{caseElem(prefix,"bar",attribs,scope,content@_*)=>Elem(prefix,"bar",attribsappendAttribute(None,"newKey",Text("newValue"),scala.xml.Null),scope,content:_

xml - 使用 Scala 替代 XSLT?

在我的Scala项目中,我们有很多遗留的XSLT,并且想知道我们是否应该将XSLT转换为Scala代码。我喜欢将模板应用于节点的XSLT方法,并且可以将其用于纯DOM转换,但我认为它不太适合处理XML文档中的数据(难以阅读和测试)-我宁愿使用Scala来做到这一点。鉴于Scala的内置XML支持和模式匹配,我认为它可能是一个很好的替代品。有没有人成功地将XSLT脚本转换为Scala?是否有任何模式或最佳实践?我知道一个名为XSLT2src的将XSLT转换为Scala源代码的旧项目,但那已经沉寂了很长时间并且不支持XSLT2。谢谢 最佳答案

xml - 在 Scala 中将 XML 文字作为参数编写

我可以将变量作为多值参数传递:scala>res26:scala.xml.Elem=scala>Elem(null,"a",Null,TopScope,res26)res27:scala.xml.Elem=但我不能将XML文字作为多值参数传递:scala>Elem(null,"a",Null,TopScope,):12:error:notfound:value)但我可以将XML文字作为简单参数传递scala>defbar(s:String,n:Elem)=s+n.toStringbar:(s:String,n:scala.xml.Elem)java.lang.Stringscala>b

xml - Scala XML 支持如何工作?

我确信这应该是显而易见的,但我可以找到关于我的问题的任何引用资料。ScalaXML使用什么底层技术?它是类似于DOM、SAX还是StAX的东西?处理大型文档时应注意哪些性能损失?StAX是否仍然更高效?提前致谢。 最佳答案 大型文档(数百MB)可以使用scala.xml.pull.XMLEventReader处理。参见nightlyscaladoc(假设您将使用2.8)。这是使用像StAX这样的拉式解析器模型。总的来说,与Java相比,Scala在处理XML时各司其职。XML是不可变的。您也可以直接在Scala代码中使用XML文字,

xml - 使用带有冒号的 Scala 解析 XML ( :) inside XML tag

我一直在解析元素名称中包含“:”的XML。示例XML如下所示:valxml:String=ns-1.dns.netTRID-1-100043434343valdom=scala.xml.XML.loadString(xml)valname=dom\\"host:name"name总是空的。我需要获取的值元素标签。请告诉我如何获得它。 最佳答案 \\运算符具有误导性。它不接受XPath查询,只接受节点名称。如果要过滤前缀名称-:之前的部分-查询的那部分必须在scala中。这样的事情应该有效:valname=(dom\\"name").

xml - 如何根据 Scala 中的选项添加或不添加 XML 标记?

与AddinganXMLattributedependingonanOption相关,我想根据选项在Scala中添加一个XML标记。scala>deftoXml(value1:String,value2:Option[String])=||{value1}|{value2map(x=>{x})flatten}|toXml:(value1:String,value2:Option[String])scala.xml.Elem如果选项存在:scala>toXml("value1",Some("value2"))res1:scala.xml.Elem=value1value2如果选项不存在:

xml - 将 Scala 对象转换为 XML

有许多Scala库可以将任意对象转换为JSON,还有一些可以将JSON转换为XML,但我似乎找不到将任意对象转换为XML的好方法。什么是好的方法? 最佳答案 我用了scalaxb不久以前。如果您有一个XSD(或WSDL)作为输入来生成您的类,它会工作得很好。如果是这种情况,我也建议使用它。由于您也在谈论JSON,因此您可能有一个使用REST的Web应用程序。在这种情况下,请查看Lift'sREST-Support.例如,如果您使用其内部持久性框架之一,那么您的所有实体类型都免费获得一个toXML方法。第三种可能性是writeyour

Scala 的 XML 相等性问题

我偶然发现了Scala中XML相等性的一个特性:scala>valx=12x:scala.xml.Elem=12scala>valy={1}2y:scala.xml.Elem=12scala>x==yres0:Boolean=false我认为正在发生的事情是正在创建两个xml.Text对象,这与一个对象不同。然而,这不是它在XML规范中的工作方式:)我想知道是否有任何方法可以比较相等性以便返回true。谢谢! 最佳答案 12表示具有值为“12”的单个子节点的元素,而{1}2表示具有两个子节点的元素,其值分别为“1”和“2”。它们在S

xml - Scala 的人类可读 XML 输出?

Scala似乎对您输入的XML做了两件事,使它的可解析性不变但可读性降低:首先,它展开自己闭合的标签:scala>res109:scala.xml.Elem=其次,它将属性打乱为随机顺序,就像将它们放入哈希集中一样:scala>res110:scala.xml.Elem=这些共同导致XML的人类可读性大大降低(至少对我而言)。我对XML库不是很熟悉;有没有一种方法可以执行xml到字符串的转换,从而产生一种紧凑的人类可读形式?(如果不是默认情况下,通过递归和编写自己的字符串转换——或者是否有太多特殊情况潜伏在那里?) 最佳答案 大多数

xml - Scala 中的递归 XML

我正在尝试在scala中解析此文档:我想用它为我的2d动画引擎创建骨架。每个关节都应该做成相应的对象,并将所有的child添加到它。所以这部分应该产生类似这样的结果:j=newJoint("pelvis")lleg=newJoint("lleg")lfoot=newJoint("lfoot")rleg=newJoint("rleg")rfoot=newJoint("rfoot")lleg.addJoint(lfoot)rleg.addJoint(rfoot)j.addJoint(lleg)j.addJoint(rleg)但是,我在处理xml代码时遇到了问题。一方面,我不确定我是否完全理