[原创] 根据属性提取XML节点?

ioly 2010-02-03
想从xml中提取包含特定属性的节点。如以下xml:
...
<data name="tag1" xml:space="preserve">
   <value>value1</value>
</data>
<data name="tag2" xml:space="preserve">
   <value>value2</value>
</data>
...


想从中提取键值对,tag1:value1, tag2:value2。这些节点都具有属性“xml:space="preserve"”,不知scala怎么写?
night_stalker 2010-02-03
import scala.xml._
(x \\ "data") foreach {node =>
  node.attribute("http://www.w3.org/XML/1998/namespace", "space") match {
    case Some(Text("preserve")) =>
      println((node.attributes)("name").text + ":" + (node \ "value").text)
    case _ => ()
  }
}


注: xml:space 是一个命名空间属性,命名空间 xml 对应的 uri 一般是 http://www.w3.org/XML/1998/namespace,如果 xml 中指定了别的 uri,请改为相应的。
ioly 2010-02-03
3x very much
Global site tag (gtag.js) - Google Analytics