Scala XML, удалить узел путем сопоставления с образцом - PullRequest
0 голосов
/ 20 марта 2019

Привет, у меня есть большой 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? Или узел, содержащий определенный текст, с сопоставлением с образцом?

1 Ответ

0 голосов
/ 20 марта 2019

работает следующий код:

  override def transform(node: Node): Seq[Node] = node match {
  case Elem(_, "relation", attr: MetaData, _, _ @ _*) if attr.prefixedKey == "scheme" => NodeSeq.Empty
  case n => n
}

Есть ли более чистый способ?

...