Powershell Treeview Tiefe ermitteln
Hi@PS Profis,
mir ist der Codeschnipsel von Uwe wieder in die in die Finger gefallen.
Jetzt wollte ich parseXML anpassen(um Parameter für die maximale Tiefe erweitern) und bekomme die Tiefe vom TreeView nicht raus.
Ich habe unterschiedliche Tiefen in den Subtrees. Jetzt soll in dem View nur bis zur Vorletzten Ebene die Elemente angezeigt werden.
Wenn ich in den Tree klicke soll der Inhalt der Node in einem Datagridview angezeigt werden.
Liefert mir einen Counter allerdings immer von der aktuellen Ebene.
Über "Level" komm ich auch nur ran wenn die Node selektiert wäre.
;(
Über was bekomme ich die Tiefe vom Tree raus?
Gruß vom H41mS1C0r
mir ist der Codeschnipsel von Uwe wieder in die in die Finger gefallen.
$buttonXMLLoad_Click={
#TODO: Place custom script here
function parseXML([System.Xml.XmlNode]$node, [System.Windows.Forms.TreeNode]$treenode)
{
$node.Childnodes | %{ $tn = $treenode.Nodes.Add($_.Name); parseXML $_ $tn }
}
if ($openFileDialog1.ShowDialog())
{
$treeviewNav.Nodes.Clear()
$xml = new-object XML
$xml.Load($openFileDialog1.FileName)
$rootNode = $treeviewNav.Nodes.Add($xml.ChildNodes[1].Name)
parseXML $xml.DocumentElement $rootNode
}
}
Jetzt wollte ich parseXML anpassen(um Parameter für die maximale Tiefe erweitern) und bekomme die Tiefe vom TreeView nicht raus.
Ich habe unterschiedliche Tiefen in den Subtrees. Jetzt soll in dem View nur bis zur Vorletzten Ebene die Elemente angezeigt werden.
Wenn ich in den Tree klicke soll der Inhalt der Node in einem Datagridview angezeigt werden.
getNoteCount
Liefert mir einen Counter allerdings immer von der aktuellen Ebene.
Über "Level" komm ich auch nur ran wenn die Node selektiert wäre.
;(
Über was bekomme ich die Tiefe vom Tree raus?
Gruß vom H41mS1C0r
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 291060
Url: https://administrator.de/forum/powershell-treeview-tiefe-ermitteln-291060.html
Ausgedruckt am: 08.04.2025 um 14:04 Uhr
14 Kommentare
Neuester Kommentar

Prüfe einfach in parseXML den Knoten auf Vorhandensein von weiteren Childnodes und wenn diese keine mehr haben füge den Knoten nicht mehr hinzu...
Gruß grexit
p.s. Wer ist Uwe ?? Uwe Seeler ?
Gruß grexit
p.s. Wer ist Uwe ?? Uwe Seeler ?
Zitat von @122990:
Prüfe einfach in parseXML in der Schleife den nächsten Knoten auf Vorhandensein von weiteren Childnodes und wenn diese keine mehr haben füge sie nicht mehr hinzu...
Gruß grexit
p.s. Wer ist Uwe ?? Uwe Seeler ?
Prüfe einfach in parseXML in der Schleife den nächsten Knoten auf Vorhandensein von weiteren Childnodes und wenn diese keine mehr haben füge sie nicht mehr hinzu...
Gruß grexit
p.s. Wer ist Uwe ?? Uwe Seeler ?
@colinardo ist Uwe

Na das nenn ich mal eine Aussage, Danke. Gibt hier ja doch einige Uwe's 
Zitat von @122990:
Na das nenn ich mal eine Aussage, Danke. Gibt hier ja doch einige Uwe's
Na das nenn ich mal eine Aussage, Danke. Gibt hier ja doch einige Uwe's
Aber nur einen SuperPowerShell-Uwe!
Zitat von @AnkhMorpork:
Aber nur einen SuperPowerShell-Uwe!
Also gefühlt kann dieser Uwe mit allem programmieren, was nicht bei 3 auf dem Baum ist Zitat von @122990:
Na das nenn ich mal eine Aussage, Danke. Gibt hier ja doch einige Uwe's
Na das nenn ich mal eine Aussage, Danke. Gibt hier ja doch einige Uwe's
Aber nur einen SuperPowerShell-Uwe!

Denk doch mal ganz genau nach... welche Nodes du hier zählst
und trink mal einen Kaffee ...

Ich lass dich noch was zappeln, sollst ja was lernen ich sag nur wo dein Fehler liegt ...
Hier
Wie gesagt solltest du dich hier fragen welchen Knoten du hier auf Childnodes prüfst
, den aktuellen in der Schleife ? Nein ... wenns jetzt nicht klick macht, mach Feierabend...
Hier
if($node.HasChildNodes -eq $true)

Er prüft an der Stelle halt nicht sub sondern die node da drüber und die ist halt immer $true.
Letzter Hinweis ...
$_
:-P

Das ist nach dem Punkt möglich.
Nope, der GUI sollte man nicht immer vertrauen ...if ($_.HasChildNodes){
$xml = [xml]@"
<?xml version="1.0" encoding="utf-8"?>
<root>
<test>
<test2></test2>
</test>
<test>
<test2>
<sub></sub>
</test2>
</test>
<test>
<test2></test2>
</test>
<test>
</test>
</root>
"@
function parseXML($node){
$node.ChildNodes | %{
if ($_.HasChildNodes){
$_.name
parseXML $_
}
}
}
parseXML $xml
I'm out here now.
Gruß grexit