2
我試圖從常規XML結構中提取屬性;首先排除特定屬性缺失的元素似乎很自然。過濾具有空屬性的XML元素
我不知道爲什麼下面不工作(請參閱回答爲什麼我曾經得到了主意,測試與null
):
val test = <top><el attr="1"></el><el></el><el attr="2"></el></top>
test.child.filter(_ \ "@attr" != null).map(_ \ "@attr")
// ArrayBuffer(1, NodeSeq(), 2)
爲什麼中間元素的filter
後仍然存在?
我確認它不是運算符優先級:
test.child.filter(x => (x \ "@attr") != null).map(_ \ "@attr")
// ArrayBuffer(1, NodeSeq(), 2)
或者(假設這是內部優化),我怎麼能排除NodeSeq()
元素的map
步驟之後?