Jump to content

Manestrum

Members
  • Gesamte Inhalte

    3
  • Registriert seit

  • Letzter Besuch

Fortschritt von Manestrum

Rookie

Rookie (2/14)

  • Eine Woche dabei
  • Erste Antwort
  • Erster eigener Beitrag

Neueste Abzeichen

1

Reputation in der Community

1

Beste Lösungen

  1. Die index.xml Datei enthält einen Verweis auf die im jeweiligen Ordner vorhandenen *.csv Dateien und weitere Details. Ordner A = A.csv, B.csv, C.csv, index.xml Ordner B = A.csv, B.csv, C.csv, D.csv, index.xml Ordner C = X.csv, B.csv, index.xml Das Skript fügt die CSV-Dateien von Ordner A, B und C durch Get-Content und Set-Content in Ordner D zusammen, Ordner D = A.csv, B.csv, C.csv, D.csv, X.csv | Würde ich jetzt die index.xml aus Ordner B kopieren hätte ich später keine Informationen über die X.csv-Datei. Somit muss ich die index.xml Dateien verschmelzen ohne das Werte doppelt vorkommen. :) Danke aber für deine Erläuterung mit dem "PrimaryKey". :) Das hilft meinem Verständnis schon mehr auf die Sprünge als vorher. :)
  2. Hallo, ich kann den Eintrag schließen.. Nach einziger Zeit des Suchens habe ich eine Lösung gefunden, welche bei mir funktioniert. $global:PrimaerDaten = New-Object System.XML.XMLDocument $global:PrimaerDaten.Load("") #Pfad entfernt. $global:SekundaerDaten = New-Object System.XML.XMLDocument $global:SekundaerDaten.Load("") #Pfad entfernt. $parent = $SekundaerDaten.SelectSingleNode("DataSet/Media") # enumerate source nodes foreach ($localNode in $PrimaerDaten.SelectNodes("/DataSet/Media/Table")) { # check if node exists in destination $serverNode = $parent.SelectSingleNode("//Table[Name='$($localNode.Name)']") # remove if exists if ($serverNode) { [void]$parent.RemoveChild($serverNode) } # append from source [void]$parent.AppendChild($SekundaerDaten.ImportNode($localNode, $true)) } Obiger Code prüft ob der Eintrag schon vorhanden ist, löscht ihn und fügt ihn neu hinzu. Dadurch erzeuge ich keine Duplikate und bekomme auch die neuen Einträge hinzu. Das ganze hat mich bestimmt drei Wochen gekostet. :) Da ich nicht weiß, wie ich den Thread schließe: @Mods bitte schließen. :) Ich poste meine Lösung, falls andere Leute die gleichen Probleme haben könnten. Freundliche Grüße :)
  3. Hallo liebe Community, ich schreibe aktuell an einem Skript, welches CSV-Dateien aus Unterordnern in einen Hauptordner kopiert und zusammenfügt. In jedem Unterordner existiert auch eine XML-Datei, welche für eine spätere Verwendung die Überschriften der CSV-Dateien beinhaltet. Einige CSV-Dateien sind nicht in jedem Unterordner enthalten, aber in der dazugehörigen XML-Datei. Ich möchte daher die XML-Dateien auch zusammenfügen. Die XML-Datei hat folgende Knoten: DataSet/Media/Table - In Table ist alle für die jeweilige CSV-Datei als Element erfasst. Es existieren keine Attribute. Ich möchte nur die fehlenden Table in der Hauptxml-Datei einfügen. Mein Problem ist das Einfügen der kopierten Node aus der Primären-Datei in die Sekundäre-Datei. Bei folgendem Code bekomme ich den unten aufgeführten Fehler. Die Google Suche hat mich nicht weitergebracht. $global:PrimaerDaten = New-Object System.XML.XMLDocument $global:PrimaerDaten.Load("") # Wurde für den Thread entfernt. $global:SekundaerDaten = New-Object System.XML.XMLDocument $global:SekundaerDaten.Load("") # Wurde für den Thread entfernt. $BName = "'Mitarbeiterdaten.Arbeitszeiten'" $xpath = "//Table[Name=" + $BName + "]" $item = Select-Xml $PrimaerDaten -Xpath ($xpath) $item.Node.ParentNode.Name $newnode = $item.Node.CloneNode($true) $Media = Select-XML -Xml $SekundaerDaten -XPath '/DataSet/Media' #$Media.Node.InsertAfter($newnode, "Datenträger") # Wurde von mir verwendet für Testzwecke, da das Parentelement wohl nicht Media ist sondern Datenträger $Media.Node.AppendChild($newnode) - Hier tritt der Fehler auf. Fehler: __________________________________________________________________________________________________________________________________ Ausnahme beim Aufrufen von "AppendChild" mit 1 Argument(en): "Der einzufügende Knoten stammt aus einem anderen Dokumentenkontext." In:22 Zeichen:1 + $Media.Node.AppendChild($newnode) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException __________________________________________________________________________________________________________________________________ Ich hoffe jemand kann mir mein Problem erläutern und erklären. Freundliche Grüße
×
×
  • Neu erstellen...