Ich durchquere eine XML-Struktur, die jeden Knoten mithilfe von DFS besucht. Die Ausgabe, die ich bekomme, ist nicht das, was ich erwartet habe.Scala: Das Verfolgen einer XML-Struktur mit DFS führt zu unerwarteten Ergebnissen
object Main extends App {
lazy val testXml =
<vehicles>
<vehicle>
gg
</vehicle>
<variable>
</variable>
</vehicles>
traverse.dfs(testXml.head)
}
object traverse {
def dfs(node: Node): Unit = {
println("==============")
println(node.label + ">>>" + node.child + ">>>" + node.child.size)
node.child.map(child => {
dfs(child)
})
}
}
Ausgang:
==============
vehicles>>>ArrayBuffer(
, <vehicle>
gg
</vehicle>,
, <variable>
</variable>,
)>>>5
==============
#PCDATA>>>List()>>>0
==============
vehicle>>>ArrayBuffer(
gg
)>>>1
==============
#PCDATA>>>List()>>>0
==============
#PCDATA>>>List()>>>0
==============
variable>>>ArrayBuffer(
)>>>1
==============
#PCDATA>>>List()>>>0
==============
#PCDATA>>>List()>>>0
Process finished with exit code 0
Wenn Sie einen Blick auf den Ausgang nehmen, für das erste Element (vehicles
) es sagt, es 5 Kinder hat. Wenn Sie die Kinder drucken, sind zwei Kinder (das erste und das letzte) leer.
Ich möchte die Traversal besuchen vehicles
dann vehicle
dann gg
und schließlich variable
.
Jeder Rat mit diesem wird geschätzt. Vielen Dank.
Vielen Dank ........ –
Ich muss die XML durchlaufen, um Pfade zu allen Blattknoten zu generieren. Ich habe eine andere Frage gestellt. Bitte schau es dir an. https://stackoverflow.com/questions/39001421/scala-what-is-the-easiest-way-to-get-all-leaf-nodes-and-their-paths-in-an-xml –