在Scala中,如何在没有子节点文本的情况下获取XML节点的文本?
我有一个XML文件,其中我有一个特定的节点,它总是有文本,也可能有一个子节点。在Scala中读取后,Node元素可以类似于:在Scala中,如何在没有子节点文本的情况下获取XML节点的文本?,scala,xml-parsing,Scala,Xml Parsing,我有一个XML文件,其中我有一个特定的节点,它总是有文本,也可能有一个子节点。在Scala中读取后,Node元素可以类似于: val nodeWithChild = <cell colorbg="16777215"> independent <grid> <row> <cell colorbg="16777215">
val nodeWithChild = <cell colorbg="16777215">
independent
<grid>
<row>
<cell colorbg="16777215">
exclusively
</cell>
</row>
</grid>
</cell>
val nodeWithoutChild = <cell colorbg="16777215">
dependent
</cell>
去掉空白是没有问题的。但问题是,在第一种情况下,我不希望在结果中只使用这个词。我只想要一个独立的结果
我如何理解这篇课文 您可以使用Elem
的child
方法获取其子节点(而不是其其余子节点),然后收集
(或过滤器
,或平面图
等)仅选择文本节点:
scala> val texts = nodeWithChild.child.collect { case Text(t) => t }
texts: Seq[String] =
ArrayBuffer("
independent
", "
")
如果要忽略空白:
scala> texts.map(_.trim).filterNot(_.isEmpty)
res3: Seq[String] = ArrayBuffer(independent)
您也可以在选择文本节点的过程中进行过滤,方法是在案例中添加类似于if t.trim.nonEmpty
的内容。谢谢,我刚开始使用Scala,不知道节点的文本被视为子节点。
scala> texts.map(_.trim).filterNot(_.isEmpty)
res3: Seq[String] = ArrayBuffer(independent)