Scala在PCDATA中嵌入了嵌套的XML文档
发布时间:2020-12-16 10:03:32 所属栏目:安全 来源:网络整理
导读:我遗憾地要求生成一些凌乱的 XML. 主文档必须包含嵌入的XML文档.但是,嵌入文档出现在CDATA部分中.最终结果应如下所示: ?xml version="1.0"?foo xml ![CDATA[ ?xml version="1.0" encoding="UTF-8"? bar /bar ]] /xml/foo 我遇到两个问题: 首先,在CDATA部分
我遗憾地要求生成一些凌乱的
XML.
主文档必须包含嵌入的XML文档.但是,嵌入文档出现在CDATA部分中.最终结果应如下所示: <?xml version="1.0"?> <foo> <xml> <![CDATA[ <?xml version="1.0" encoding="UTF-8"?> <bar> </bar> ]]> </xml> </foo> 我遇到两个问题: 首先,在CDATA部分内输出的任何内容都呈现为转义(例如,大于号的>变为& gt;) 有没有办法禁用CDATA部分中的转义? 其次,我无法创建XML声明.尝试包含嵌入的XML文档时,我收到以下异常: def serializeEmbedded(): Seq[Node] = { <?xml version="1.0"?> <bar> </bar> } Exception in thread "main" java.lang.IllegalArgumentException: xml is reserved at scala.xml.ProcInstr.<init>(ProcInstr.scala:25) 这是我第一次涉足Scala的原生XML处理. 谢谢, Saish 解决方法
XML声明仅与序列化真正相关,您无法使用Scala的XML文字语法(如您所发现的那样)指定它.
我建议定义一个这样的辅助函数: import scala.xml._ def toCData(doc: Elem) = { val w = new java.io.StringWriter XML.write(w,doc,"UTF-8",true,null) PCData(w.toString) } 现在你可以写,例如: scala> val doc = <outer>{ toCData(<inner/>) }</outer> doc: scala.xml.Elem = <outer><![CDATA[<?xml version='1.0' encoding='UTF-8'?> <inner></inner>]]></outer> 它不像在语言支持方面那样优雅,但它有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- twitter-bootstrap – 如何在yii2 alpha中将bootstrap3图标
- Shell编程中的用户输入处理(2):处理命令行参数(选项、参
- bash – nohup在使用双&符号(\u0026\u0026)而不
- 如何使用Bootstrap 按钮实例详解
- shell – 如何通过sudo传递别名
- twitter-bootstrap – 未捕获错误:没有模块:ui.bootstrap
- 如何使用scala 2.10 trunk与sbt 0.11.0? (未解决的依赖项)
- scala – Slick 3.0如何更新变量列列表,该数字仅在运行时知
- Scala公共方法:’;’预计会发现’def’
- bootstrap + angularjs + springmvc + mybatis框架之加载lo