Привет, у меня есть большой 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>
Единственный узел, который я хочу удалить, — это верхний. Я использую ПравилоТрансформер для этого. В преобразователе я использую следующее сопоставление с образцом:
override def transform(node: Node): Seq[Node] = node match {
case Elem(_, "relation", _, _, _ @ _*) => NodeSeq.Empty
case n => n
}
Но это не делает различий между узлами отношений. Как я могу удалить только узел с атрибутом scheme? Или узел, содержащий определенный текст, с сопоставлением с образцом?





Работает следующий код:
override def transform(node: Node): Seq[Node] = node match {
case Elem(_, "relation", attr: MetaData, _, _ @ _*) if attr.prefixedKey == "scheme" => NodeSeq.Empty
case n => n
}
Есть ли более чистый способ?