Il pacchetto scala.xml
rappresenta XML con nodi di un albero etichettato. Ma questo albero è unidirezionale in Scala 2.7, poiché sembra che non ci sia modo di accedere al genitore Elem
di un dato Elem
? Lo stesso sembra applicarsi per il genitore Document
. Ad esempio, in XOM hai gli accessor getParent
e getDocument
per navigare verso la radice dell'albero. Questo può essere fatto con l'API XML di Scala?Come accedere all'elemento padre in Scala XML
risposta
Come menzionato da altri, non esistono collegamenti principali per renderli strutture immutabili efficienti. Ad esempio:
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>
Nessuna struttura dati è stata copiata. Il nodo puntato da b
è lo stesso nodo puntato da entrambi a
e c
. Se doveva indicare un genitore, allora dovresti farne una copia quando lo hai usato in c
.
Per navigare in quella struttura dati nel modo desiderato, è necessario ciò che viene chiamato un Cursore XML Puramente Applicativo.
Ma questo albero è unidirezionale in Scala?
Sì. A causa dell'approccio all'immutabilità in scala.xml, i nodi non conoscono il loro genitore.
È unidirezionale, quindi i nodi non sono consapevoli del proprio genitore.
Potrebbe essere possibile risolvere il problema convertendo in DOM. Non sembra che ci sia qualcosa nella libreria standard per questo, ma ho trovato this thread sull'argomento che potrebbe essere utile.
- 1. Come accedere all'oggetto padre in C#
- 2. Come accedere a Iframe padre da JavaScript
- 3. Handlebars.js: Come accedere all'indice padre in nidificato ciascuno?
- 4. XML ricorsivo a Scala
- 5. Impedire PHP di accedere alla directory padre
- 6. Converti oggetto Scala in XML
- 7. Scala XML performance vs. Java XML
- 8. Come accedere alle enumerazioni Java da Scala?
- 9. Serializzazione XML Scala
- 10. Scala: attributo XML parsing
- 11. Impossibile accedere alla variabile membro padre in Python
- 12. scala: come modellare una relazione di base padre-figlio
- 13. Gruppo xml per id padre in ul li html
- 14. Come modificare l'attributo su Scala XML Element
- 15. Come funziona il supporto di Scala XML?
- 16. Generazione di XML formattato in Scala
- 17. scrittura letterale XML come parametro a Scala
- 18. XML di marshalling/unmarshalling in Scala
- 19. Come posso accedere all'ultimo risultato in Scala REPL?
- 20. Come accedere e lavorare con XML da API in C#
- 21. Come sovrascrivere una proprietà statica di un oggetto padre e consentire all'oggetto padre di accedere al nuovo valore in PHP?
- 22. conversione XML automatico a Scala
- 23. Come scrivere {nome} in xml di scala, non convertirlo?
- 24. Come produrre codice XML ben formattato in Scala?
- 25. Oggetto padre in php
- 26. Python e ElementTree: restituisce "inner XML" escluso l'elemento padre
- 27. Definizione di stile padre XML di gradiente/forma/angoli
- 28. SQL Server .nodes() Nodi padre XML per nome
- 29. XML: figlio e padre con lo stesso nome
- 30. Come accedere all'attributo padre in un file di tag JSP nidificato?