嗨,我有一个大的xml文件,我想使用模式匹配在其中删除某些节点。 xml的一部分如下所示:
<ddm:relation scheme="STREAMING_SURROGATE_RELATION">/path/to/somewhere/$id</ddm:relation>here
<ddm:relation randomattribute="que">something</ddm:relation>
<ddm:relation href="http:localhost:8080">que?</ddm:relation>
我要删除的唯一节点是顶部节点。我使用RuleTransformer来这样做。在变压器中,我使用以下模式匹配:
override def transform(node: Node): Seq[Node] = node match {
case Elem(_, "relation", _, _, _ @ _*) => NodeSeq.Empty
case n => n
}
但这不能区分关系节点。如何仅删除具有属性scheme
的节点?还是包含特定文本且具有模式匹配的节点?
答案 0 :(得分:0)
以下代码有效:
override def transform(node: Node): Seq[Node] = node match {
case Elem(_, "relation", attr: MetaData, _, _ @ _*) if attr.prefixedKey == "scheme" => NodeSeq.Empty
case n => n
}
有没有更干净的方法?