如何从字符串加载NodeSeq?

时间:2013-05-11 09:19:46

标签: xml scala

Scala代码:

val str = "<a>11</a><b>22</b>"
XML.loadString(str)

它会报告例外(当然):

org.xml.sax.SAXParseException:
The markup in the document following the root element must be well-formed.

是否可以从字符串加载NodeSeq?

2 个答案:

答案 0 :(得分:5)

scala中的解析器不喜欢您的示例字符串

val str2="<xml><a>11</a><b>22</b></xml>"

工作正常,我猜你的例子不算作完整的文件

要使元素“在...内部”<xml>..</xml>执行此操作

val n = xml.XML.loadString(str2)
val list = n.child

返回List

scala> n.child
res12: Seq[scala.xml.Node] = List(<a>11</a>, <b>22</b>)

答案 1 :(得分:1)

为了补充Vorsprung的回答,实际原因为什么XML.loadString在输入<a>11</a><b>22</b>上失败的原因正是异常告诉你的(强调我的):< / p>

  

根元素后面的文档中的标记必须是   合式

well-formed XML文档的要求之一是它包含正好一个根元素

因此,例如,此工作正常,并为您提供NodeSeq(更准确地说Elem):

XML.loadString("<c><a>11</a><b>22</b></c>")