Le package scala.xml
représente le langage XML avec les nœuds d'un arbre étiqueté. Mais cet arbre est-il unidirectionnel dans Scala 2.7, car il semble qu'il n'y ait aucun moyen d'accéder au parent Elem
d'un Elem
donné? La même chose semble s'appliquer au parent Document
. Par exemple, dans XOM, vous avez les accesseurs getParent
et getDocument
pour naviguer vers la racine de l'arbre. Cela peut-il être fait avec l'API XML de Scala?Comment accéder à l'élément parent dans Scala XML
Répondre
Comme mentionné par d'autres, il n'y a pas de liens parents pour les rendre efficaces structures immuables. Par exemple:
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>
Aucune structure de données n'a été copiée. Le noeud pointé par b
est le même noeud pointé par à la fois a
et c
. S'il devait pointer vers un parent, alors vous devriez en faire une copie lorsque vous l'avez utilisé dans c
.
Pour naviguer dans cette structure de données comme vous le souhaitez, vous avez besoin de ce qu'on appelle un curseur XML purement applicatif.
Mais cet arbre est-il unidirectionnel dans Scala?
Oui. En raison de l'approche de l'immutabilité dans scala.xml, les nœuds ne connaissent pas leur parent.
Il est unidirectionnel, donc les nœuds ne sont pas conscients de leur parent.
Vous pourriez être en mesure de résoudre votre problème en convertissant en DOM. Il ne semble pas y avoir quelque chose dans la bibliothèque standard pour cela, mais j'ai trouvé this thread sur le sujet qui pourrait être utile.
- 1. Comment accéder à ActiveRecord :: AutosaveAssociation.marked_for_destruction? à partir de modèle parent
- 2. Scala: comment créer des nœuds XML à partir d'une collection
- 3. Comment accéder au widget parent sur qt?
- 4. Comment gérer la référence de caractères XML dans scala?
- 5. comment accéder au fichier xml?
- 6. Accéder au thème du parent depuis iframe
- 7. WPF Databinding: Comment accéder au contexte de données "parent"?
- 8. (SWIG/Lua) Comment accéder à la liste des classes de base/parent dans swig_lua_class
- 9. comment accéder aux nœuds xml flex
- 10. Construire XML avec étiquette dynamique et attributs dans Scala?
- 11. Comment puis-je accéder à des données profondes dans une structure XML imbriquée dans Perl en utilisant XML :: Simple?
- 12. Comment obtenir le grand-parent et grand grand-parent du noeud xml
- 13. Comment puis-je accéder aux données XML dans ma colonne en utilisant LINQ to XML?
- 14. Comment accéder à wikipedia
- 15. Comment utiliser XML :: XPath pour obtenir le noeud parent?
- 16. Comment trier un tableau dans Scala?
- 17. comment accéder à hachage dans le contrôleur
- 18. Comment accéder à plusieurs JPanels dans JFrame?
- 19. Traitement simultané dans Scala
- 20. Comment copier une liste dans Scala
- 21. Comment convertir une variable dans Scala?
- 22. Comment imprimer une carte dans Scala
- 23. Comment exécuter une fonction dans Scala
- 24. Comment puis-je accéder au parent de base d'un objet dans une hiérarchie WPF?
- 25. Modification de l'espace de noms XML avec Scala
- 26. accéder aux variables et aux méthodes de l'objet javascript parent?
- 27. EBNF à parser Scala Combinator
- 28. Comment accéder à Entity Framework
- 29. Comment récupérer le nœud parent à l'aide de cElementTree?
- 30. Scala profiler?