5
A
答えて
0
は、私はどうなるのか、特定のノードとXPathのために、このAPIは、新しいノードでXMLのコピーを作成することになり、たとえば.toList.last.text
を使用してリストにXMLを変換\\
を使用してXMLを解析であります
jsonOption collect
ここでは、orElse Some
を使用していくつかのオプションを再度変更し、最後にfor yield
を使用して、必要なxmlを得ることができます。
データ変換のスケールの柔軟性を活用してください。それは同じである必要はありませんが、私はあなたが光を見ることができると確信しています...
6
これを行うにはRewriteRule
、2.10.3 documentationを使用できます。
val cats = <Cats>
<Cat Name="Floyd"/>
<Cat Name="Onyx"/>
</Cats>
その後、あなたは属性
class AddLastName(name: String, lastName: String) extends RewriteRule {
override def transform(n: Node): Seq[Node] = n match {
case e: Elem if e.label == "Cat" && (e \\ "@Name" text).equals(name) =>
val cat: String = e.attributes("Name").head.text
e % Attribute(None, "Name", Text(s"$name $lastName"), Null)
case x => x
}
}
val rule = new RuleTransformer(new AddLastName("Stevie", "Nicks"))
rule.transform(cats)
res3: Seq[scala.xml.Node] = List(<Cats><Cat Name="Floyd"/><Cat Name="Onyx"/><Cat Name="Stevie Nicks"/></Cats>)
これらのアプロの両方を変更したい
val rule = new RuleTransformer(new AddCat("Stevie"))
rule.transform(cats)
res2: Seq[scala.xml.Node] = List(<Cats><Cat Name="Floyd"/><Cat Name="Onyx"/><Cat Name="Stevie"/></Cats>)
同様ならば、次にあなたができるRewriteRule
class AddCat(name: String) extends RewriteRule {
override def transform(n: Node): Seq[Node] = n match {
case e: Elem if e.label == "Cats" =>
val cats = (e \\ "Cat")
val newCat = <Cat Name={name}/>
new Elem(e.prefix, "Cats", e.attributes, e.scope, e.minimizeEmpty, (cats ++ newCat).toSeq:_*)
case x => x
}
}
を想定痛みはあなたが探していることをするでしょう。難しい部分は、子供たちをどうやって得るかを考え出し、親ノードを構築することです。
関連する問題
- 1. Scala Spark Cassandraプライマリキーでローを更新または挿入する
- 2. XML文書のノードを更新または挿入する
- 3. ストアドプロシージャのXMLを使った挿入と更新
- 4. クエリの挿入/更新
- 5. データの挿入/更新
- 6. Laravel - ピボットテーブルの挿入/更新
- 7. 挿入新しいXMLテキストが
- 8. Entity Framework 4.0挿入/更新
- 9. トリガー挿入と更新
- 10. 更新と挿入トリガー
- 11. Talend - 挿入/更新とテーブルファイルテーブル
- 12. 重複更新に挿入
- 13. VFP挿入、インデックス更新
- 14. 重複更新に挿入
- 15. 挿入トークンdynamicaly Scalaの
- 16. 非同期挿入と更新非同期挿入と更新:NoSqlとSQL
- 17. Scala Guice - mixinを挿入
- 18. コミット(挿入または更新)の前にトリガーを挿入
- 19. Scala Slick更新
- 20. 挿入後のGridViewの更新
- 21. MySQLのトリガのif-else挿入更新
- 22. DataTable、VB.NETの行の挿入/更新
- 23. SQLの挿入後の更新
- 24. ibatisのバッチ挿入/更新の更新カウントの取得
- 25. 挿入/更新、複数のオブジェクトが
- 26. 更新と挿入クエリのスプリングデータjpa
- 27. iPhone:Sqliteの更新または挿入行
- 28. Android Contentprovider - 挿入メソッド内の更新
- 29. MYSQL、挿入/更新、else文の場合
- 30. NHibernate:日付の挿入と更新
Xpathはクエリ言語です。私が知っている限り、それを更新したり書き込んだりすることはできません。あなたはxsltを意味しますか? – Jan
ノードを「選択」するためにXPathが使用され、この「親」ノードに子として追加されるノードを指定します。 btw。 ScalaのXMLは不変ですが、このタスクを達成する方法はありますか? – user1746915
[this](http://stackoverflow.com/questions/4018300/substituting-xml-values-programatically-with-scala)の質問はどうですか?これは、ノードをscala xmlで更新する方法を示しています。 – Jan