scala.xml.Utility 代码实例
来源:互联网 发布:linux怎么退出top命令 编辑:程序博客网 时间:2024/05/29 08:10
scala.xml.Utility 代码实例
实例 1
package actorsimport akka.actor.Actorimport akka.actor.ActorLoggingimport akka.event.LoggingReceiveimport play.api.libs.json.JsValueimport play.api.libs.json.Jsonimport akka.actor.ActorRefimport akka.actor.Propsimport scala.xml.Utilityclass UserActor(nick: String, userId: Int, board: ActorRef, out: ActorRef) extends Actor with ActorLogging { override def preStart() = { board ! Subscribe import UserActor._ val js = Json.obj("type" -> "info", "img" -> userId % AvatarCount) out ! js } def receive = LoggingReceive { case Message(nickname, id, s) if sender == board => import UserActor._ if (nickname != nick) { val js = Json.obj("type" -> "message", "nickname" -> nickname, "msg" -> s, "img" -> id % AvatarCount) out ! js } case js: JsValue => (js "msg").validate[String] map { Utility.escape } foreach { board ! Message(nick, userId, _) } case other => log.error("unhandled: " + other) }}object UserActor { val AvatarCount = 11 var userCount = 0 def props(nick: String)(out: ActorRef) = { userCount += 1 Props(new UserActor(nick, userCount - 1, BoardActor(), out)) }}
实例 2
package com.github.rvanheest.spickle.example.xml.personimport scala.xml.{ Elem, Node, Utility }trait PersonXml { // @formatter:off private val person1: Elem = <person age="24" xlink:age="24"> <name>Jonathan Moreno</name> <address> <street>Atwood</street> <number>6689</number> <zip-code>1234AB</zip-code> <city>Tembladera</city> </address> <mail>[email protected]</mail> </person> private val person2: Elem = <person age="48" xlink:age="48"> <name>Jonathan Moreno</name> <address> <street>Atwood</street> <number addition="a">6689</number> <zip-code>1234AB</zip-code> <city>Tembladera</city> </address> <mail>[email protected]</mail> </person> private val person3: Elem = <person age="68" xlink:age="68"> <name>Jonathan Moreno</name> <address> <freepost-number>70</freepost-number> <zip-code>1234AB</zip-code> <city>Tembladera</city> </address> </person> // @formatter:on val xml1: Node = Utility.trim(person1) val xml2: Node = Utility.trim(person2) val xml3: Node = Utility.trim(person3)}
实例 3
package actorsimport actors.UserSocket.{ChatMessage, Message}import actors.UserSocket.Message.messageReadsimport akka.actor.{Actor, ActorLogging, ActorRef, Props}import akka.cluster.pubsub.DistributedPubSubimport akka.cluster.pubsub.DistributedPubSubMediator.{Publish, Subscribe}import akka.event.LoggingReceiveimport play.api.libs.json.{Writes, JsValue, Json}import play.twirl.api.HtmlFormatimport scala.xml.Utilityobject UserSocket { def props(user: String)(out: ActorRef) = Props(new UserSocket(user, out)) case class Message(msg: String) object Message { implicit val messageReads = Json.reads[Message] } case class ChatMessage(user: String, text: String) object ChatMessage { implicit val chatMessageWrites = new Writes[ChatMessage] { def writes(chatMessage: ChatMessage): JsValue = { Json.obj( "type" -> "message", "user" -> chatMessage.user, "text" -> multiLine(chatMessage.text) ) } } private def multiLine(text: String) = { HtmlFormat.raw(text).body.replace("n", "<br/>") } }}class UserSocket(uid: String, out: ActorRef) extends Actor with ActorLogging { val topic = "chat" val mediator = DistributedPubSub(context.system).mediator mediator ! Subscribe(topic, self) def receive = LoggingReceive { case js: JsValue => js.validate[Message](messageReads) .map(message => Utility.escape(message.msg)) .foreach { msg => mediator ! Publish(topic, ChatMessage(uid, msg))} case c:ChatMessage => out ! Json.toJson(c) }}
实例 4
package edu.ncrn.cornell.xmlimport scala.annotation.tailrecimport scala.xml.{Node, Utility}import ScalaXmlExtra._import XpathEnumerator._class XpathXmlEnumerator( protected val nodesIn: List[Node]) extends XpathEnumerator { @tailrec final def enumerateXml( nodes: List[(Node, String)], pathData: List[(String, String)] )(implicit nodeFilters: NodeFilters): List[(String, String)] = nodes.filter(x => nodeFilters(x._2, x._1)) match { case (node, currentPath) +: rest => val newElementData = if(node.child.isEmpty) List((cleanXpath(currentPath), node.text)) else Nil val newAttributeData = node.attributes.asAttrMap.map{ case (key, value) => (currentPath + "/@" + key, value) }.toList enumerateXml( rest ++ pathifyNodes(node.child.toList, currentPath + "/", nonEmpty), newElementData ::: newAttributeData ::: pathData ) case Nil => pathData } def enumerate( nonEmpty: Boolean, newNodeFilters: NodeFilters ): List[(String, String)] = { implicit val nodeFilters = newNodeFilters this.nonEmpty = nonEmpty enumerateXml(pathifyNodes( nodesIn.map(x => Utility.trim(x)), "/", nonEmpty ), Nil) }}object XpathXmlEnumerator { //def apply() ...}
阅读全文
0 0
- scala.xml.Utility 代码实例
- XML Utility
- xml中嵌入Scala代码
- xml解析代码实例
- Scala学习笔记16【Scala闭包代码实例】
- Spark GraphX 入门实例完整scala代码
- scala 代码实例——customer_extract
- Spark GraphX 入门实例完整Scala代码
- Utility 公用使用代码收集
- php读取xml实例代码
- scala xml
- utility
- Oracle9中XML SQL Utility技术
- ICTCLAS代码学习笔记之Utility
- 建立一个XML文档的实例代码
- php生成xml简单实例代码
- php生成xml简单实例代码
- php生成xml简单实例代码
- Oracle数据库 常用语法1031
- 探究Fragment oncreateview 和 onActivityCreated 方法
- elasticsearch-5.6.3 安装
- Redis
- 不会接口测试时,该如何使用eoLinker进行接口测试
- scala.xml.Utility 代码实例
- C++程序设计案例实训教程第10章
- ionic Error: spawn EACCES
- Linux(CentOS)下安装JDK
- web service
- Hadoop Hive Spark hive建表语句对表在hdfs上存储的file或block数量、以及后续spark读文件跑模型的影响
- ubuntu16.04 下 多opencv版本安装(3.0.0和3.3.0)
- Java的 面向对象 (类和对象的关系)
- c++ string 标准模板类