xml - 构建包含 Anti-XML 对象的 XML 文字

标签 xml scala xml-literals anti-xml

假设我有一个 Anti-XML 对象,例如:

import com.codecommit.antixml._
val child = <child attr="val">...</child>.convert

我想构造一个包含 child 作为子项的 XML 对象:

<parent foo="bar"><foo/><child attr="val">...</child><foo/></parent>

显而易见的方法是

val parent : Elem = <parent foo="bar"><foo/>{ child }<foo/></parent>.convert

问题是 Scala 的 XML 文字无法识别 Anti-XML 的对象,因此 child 被转换为字符串,并作为文本节点嵌入到 parent 中:

<parent foo="bar"><foo/>&lt;child attr="val"&gt;...&lt;/child&gt;<foo/></parent>

如何解决这个问题?

最佳答案

XML.loadString 应该可以解决问题:

val child: com.codecommit.antixml.Elem = <child />.convert
val parent: scala.xml.Elem = <parent>{scala.xml.XML.loadString(child.toString)}</parent>

对于更复杂的深度操作场景,我认为避免使用文字并使用内置的 Zipper 支持会做得更好。

关于xml - 构建包含 Anti-XML 对象的 XML 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11198074/

相关文章:

java - 如何保护 javax.xml.transform.TransformerFactory 免受 XML 外部攻击

java - 如何在 XSLT 中使用 XPath 获取元素数组,包括缺失的元素?

scala中的xml属性解析

vb.net - 条件 XML 文字

xml - 如何将 XElements 嵌入到 VB.NET 中的 XML 文本中?

java - 如何在android中的字符串资源中使用整数资源

android - 启动图像大小

scala - 如何从 Int 或 Byte 初始化枚举?

斯卡拉 : Why should i save a by-name parameter as a Function0

xml - 在 XML 文字中使用字符串