Jump to content

Proll012

Members
  • Gesamte Inhalte

    29
  • Registriert seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

Fortschritt von Proll012

Contributor

Contributor (5/14)

  • Erste Antwort
  • Engagiert
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei

Neueste Abzeichen

0

Reputation in der Community

2

Beste Lösungen

  1. Hallo, Ich versuche mit diesem Programm in der "Root-Node" einen Attributwert zu löschen bzw. durch nichts zu ersetzen. Ich habe auch schon andere Wege ausprobiert aber die haben nicht Funktioniert. Folgendes Skript schafft es wenigstens die Datei erfolgreich zu bearbeiten, wenn nur eine Datei im Verzeichnis liegt. $quellpfad ="C:\Users\Oho\Desktop\LinkEntfernerTest" $XmlData = get-ChildItem $quellpfad "*.xml" Foreach-Object{ $XMLFile = get-content $XmlData.Fullname $NewRawXML = $XMLFile|%{ if ($_ -match '\<BMECAT\s*'){ $_ -replace '\s*xmlns\=".*"','' } else{ $_ } } $NewRawXML ([xml]$NewRawXML).save($XmlData.FullName) } Wenn zwei oder mehr Dateien vorhanden sind bekomme ich folgenden Fehler.. Der Wert "System.Object[]" kann nicht in den Typ "System.Xml.XmlDocument" konvertiert werden. Fehler: "Unerwartete XML-Deklaration. Die XML-Deklaration muss der erste Knoten im Dokument sein. Kann mir da jemand weiterhelfen?
  2. Nicee danke dir, $quellpfad ="C:\Users\MeinName\Desktop\Experiment,Test" $XmlData = get-ChildItem $quellpfad "*.xml" -Recurse foreach ($xmlobject in $XmlData) { [xml]$xml = get-content $xmlobject.Fullname foreach ($Feature in ($xml.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES).FEATURE ) { if ($Feature.FVALUE -match ";") { $SplittedFVALUE = ($Feature.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $xml.CreateNode("element", "FVALUE", " ") $child.InnerText = $Value $Feature.AppendChild($child) } $ItemToRemove = $Feature.SelectSingleNode('FVALUE') $Feature.RemoveChild($ItemToRemove) } } $xml.Save($xmlobject.Fullname) } So funktionierts :)))))))) bis jetzt.
  3. Gesagt, getan. $quellpfad ="C:\Users\MeinName\Desktop\XmlFutterTest" $XmlData = get-ChildItem $quellpfad "=.xml" -Recurse foreach ($xmlobject in $XmlData) { [xml]$xml = get-content $xmlobject.Fullname foreach ($Feature in ($xmlobject.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES).FEATURE ) { if ($Feature.FVALUE -match ";") { $SplittedFVALUE = ($Feature.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $xmlobject.CreateNode("element", "FVALUE", " ") $child.InnerText = $Value $Feature.AppendChild($child) } } $ItemToRemove = $Feature.SelectSingleNode('FVALUE') $Feature.RemoveChild($ItemToRemove) } $xml.Save($xmlobject.Fullname) } Holzweg? Formfehler? zumindest bekomme ich keinen Fehler angezeigt. Passieren tut aber auch nichts :/
  4. Von dir aus betrachtet ja ganz sicher Von mir aus gesehen besteht Hoffnung Lese die gerade:) Auch schon was gefunden:D
  5. Leute was soll ich sagen Ich dachte ich bin ganz knapp vor der Lösung Und während ich vor 2 Wochen noch gar nichts verstanden habe, versteh ich jetzt doch schon deutlich mehr. :))
  6. Puh keine Ahnung welche Variable ich dann angeben muss, damit der jede eingespielten Datei unter dem eingespielten Namen in ein anderes Verzeichnis speichert.:( Da bin ich mir sicher ... $files = Get-ChildItem C:\Users\sluet\Desktop\XmlFutterTest -Recurse *.xml Foreach-Object { [xml]$XmlData = Get-Content $files } foreach ($Feature in ($XmlData.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES).FEATURE ) { if ($Feature.FVALUE -match ";") { $SplittedFVALUE = ($Feature.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $XmlData.CreateNode("element", "FVALUE", " ") $child.InnerText = $Value $Feature.AppendChild($child) }} $ItemToRemove = $Feature.SelectSingleNode('FVALUE') $Feature.RemoveChild($ItemToRemove) } $XmlData.Save($files) Könnt ihr mir denn sagen, was ich hier falsch mache? Versuche hier das Selbe wie oben. Zu Foreach-Object {[xml]$XmlData = Get-Content $files } Gibt der mir ein Fehler aus. Das der dazu nichts findet.
  7. Das war nur ein Beispiel, das wäre $NewRawXML im oben genannten Skript. Und darin sollte soweit ich richtig verstehe die überarbeitete Datei drin stehen. Der Link von BMECAT muss raus dann erkennt PowerShell das als richtiges xml. Ergo wird FVALUE beim ";" gesplittet neu verknotet und der alte FVALUE wird dann auch gelöscht. Es geht mir aber gar nicht so sehr darum. Die Links manuell raus zu Löschen ist nicht so das Problem. Viel mehr das manuelle eintragen einzelner Dateien. Haben zu Soll Pfad. Aber ich versuche das nochmal, wenn ich richtig deute, habe ich wohl nur die Variable in .save($...) eingetragen.
  8. Ja das weiß ich mittlerweile. Ich habe auch versucht das mit Variablen zu Speichern. Aber wenn ich z.B. $XmlData.Save($FinishedXml) Eintrage passiert nichts und ich weiß nicht wie ich das sonst schreiben soll/kann.
  9. Achso, ok danke, dann Funktioniert mein Skript nicht so wie erhofft..:D Wenn du sagen magst/kannst, wie mache ich das denn, dass der jede gezogene Datei einzeln durch die Prüfung schickt?
  10. Moin Nils, hmm, ich bin ziemlich neu in dem Thema. Kann sein das ich etwas will das so nicht funktioniert. Ich habe 3 Dateien in dem Verzeichnis. Und die sollen alle durch die Prüfung und dann wieder in einzelne Dateien zurück. C:\Users\Myname\Desktop\Auobearbeitungtest Ich bin davon ausgegangen, das mir nur der Code zum Speichern in einzelne Dateien fehlt.
  11. Guten Tag, Ich bin dabei xml Daten aus einem Verzeichnis einzulesen und diese zu bearbeiten. Jedoch weiß ich nicht und finde nichts wie ich diese einzeln wieder Speicher. $files = Get-ChildItem C:\Users\Myname\Desktop\Auobearbeitungtest -Recurse *.xml | Foreach-Object { [xml] $content = Get-Content $_.FullName } $NewRawXML=$content|%{ if ($_ -match '\<BMECAT\s*'){ $_ -replace '\s*xmlns\=".*"','' } else{ $_ }} Wenn ich die Dateien einzeln einspiele und einzeln wieder ausspiele geht natürlich alles wunderbar. Aber wie mache ich das hier? In der Originaldatei oder unter dem Original Namen in einem neuen Verzeichnis wäre supi. Danke und liebe Grüße
  12. Ne, das läuft super. O.o ok, so funktioniert es -<BMECAT> und wie unten nicht. -<BMECAT xml:lang="de" xmlns="http://www.bmecat.org/bmecat/2005fd" version="2005"> das Problem ist der Link. Ich versuche den jetzt direkt am Anfang zu löschen. Soweit ich Richtig verstehe, ist das ein Attribut in dem Element.
  13. Danke dir:) Habe deine xml gerade ausgeführt und dann tuts bei mir auch, aber ich weiß nicht wo der große unterschied zu dieser ist <?xml version="1.0" encoding="UTF-8"?> -<BMECAT xml:lang="de" xmlns="http://www.bmecat.org/bmecat/2005fd" version="2005"> -<T_NEW_CATALOG> -<PRODUCT> -<PRODUCT_FEATURES> <REFERENCE_FEATURE_GROUP_NAME>Test12</REFERENCE_FEATURE_GROUP_NAME> -<FEATURE> <FNAME>Marke</FNAME> <FVALUE>Test1;Test11</FVALUE> <FORDER>10</FORDER> <FVALUE_DETAILS>HK204000010</FVALUE_DETAILS> <FVALUE xmlns=" ">Test1</FVALUE> <FVALUE xmlns=" ">Test11</FVALUE> </FEATURE> -<FEATURE> <FNAME>Hersteller</FNAME> <FVALUE>Test2;Test22;Test222</FVALUE> <FORDER>20</FORDER> <FVALUE_DETAILS>HK204000020</FVALUE_DETAILS> <FVALUE xmlns=" ">Test2</FVALUE> <FVALUE xmlns=" ">Test22</FVALUE> <FVALUE xmlns=" ">Test222</FVALUE> </FEATURE> </PRODUCT_FEATURES> </PRODUCT> </T_NEW_CATALOG> </BMECAT>
  14. Das wollte ich auch nicht bestreiten, dachte vielleicht kennst du das Problem :/
  15. Wenn ich das ausführe kommt eine Fehlermeldung: [Ausnahme beim Aufrufen von "RemoveChild" mit 1 Argument(en): "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."]
×
×
  • Neu erstellen...