scala.xml
パッケージは、ラベル付きツリーのノードを持つXMLを表します。しかし、Elem
のElem
親にアクセスする方法がないように見えるので、Scala 2.7ではこのツリーは一方向ですか?同じことが親のDocument
に適用されるようです。たとえば、XOMでは、ツリーのルートに向かって移動するには、getParent
とgetDocument
のアクセサがあります。 ScalaのXML APIでこれを行うことはできますか?Scalaの親要素にアクセスする方法XML
12
A
答えて
12
他の人に言われているように、効率的な不変構造にするための親リンクはありません。たとえば:
scala> val a = <parent><children>me</children></parent>
a: scala.xml.Elem = <parent><children>me</children></parent>
scala> val b = a.child(0)
b: scala.xml.Node = <children>me</children>
scala> val c = <newparent>{b}</newparent>
c: scala.xml.Elem = <newparent><children>me</children></newparent>
scala> a
res0: scala.xml.Elem = <parent><children>me</children></parent>
scala> b
res1: scala.xml.Node = <children>me</children>
scala> c
res3: scala.xml.Elem = <newparent><children>me</children></newparent>
ませデータ構造はコピーされませんでした。 b
が指すノードは、a
とc
の両方で指し示されているノードと同じノードです。親を指し示す必要がある場合は、c
で使用したときにそのコピーを作成する必要があります。
データ構造を自由にナビゲートするには、Purely Applicative XML Cursorが必要です。
3
しかし、このツリーはScalaでは単方向ですか?
はい。 scala.xmlの不変性へのアプローチにより、ノードは親を知らない。
1
単方向であるため、ノードはその親を認識しません。
DOMに変換することで問題を解決できる場合があります。このために標準ライブラリには何もないようですが、役に立つかもしれない件に関してはthis threadが見つかりました。
関連する問題
- 1. 親要素の子要素にアクセスする方法
- 2. ArraySliceの親配列の要素にアクセスする方法は?
- 3. iframeの親要素にアクセスする方法は?
- 4. thickboxの親要素にアクセスする方法
- 5. 親ウィンドウからiframe内の要素にアクセスする方法は?
- 6. このXMLで要素にアクセスする方法
- 7. アクセス親要素(ボディ)
- 8. XML XSLTラップ要素親要素
- 9. SimpleXMLでカスタムXML要素にアクセスする方法
- 10. JavaScriptアクセスの親要素
- 11. ハッシュマップを返す際にxmlの親要素を設定する方法
- 12. XSLT:子要素に親要素を追加する方法
- 13. 親要素と次の要素を取得する方法
- 14. C#XMLファイルの親要素、子要素を特定します
- 15. [XML要素名に含める方法
- 16. PHPアクセスXMLノード要素
- 17. XML DTD。 XMLファイルで空の要素を指定する方法空の要素
- 18. インポートされた要素から親関数にアクセスする方法
- 19. 特定の要素にアクセスしてデータを取得する方法XML
- 20. XMLスキーマ:親要素属性と子要素の同じ名前
- 21. href内の親要素へのアクセス
- 22. ScalaでLinkedHashMap要素の順序を逆にする方法
- 23. Scala-Swingダイアログが親、親コンテンツにアクセスするときに
- 24. LINQ to XML - 親要素別グループ
- 25. Scala - 任意のXML要素の値を変更する
- 26. 別のxmlのxml要素にアクセスできますか?
- 27. 子要素のクリックで親要素を非表示にする方法
- 28. 親要素の選択方法は?
- 29. AlertDialogレイアウト要素 - アクセス方法
- 30. php DomDocument + xml要素に直接アクセス