none
Element aus meheren .xml ändern RRS feed

  • Frage

  • Hallo Leute,
    ich habe mehrere .xml-Files mit folgenden Inhalt:

    <?xml version="1.0">
    <translation language="de" ...>
    ...

    Ich möchte nun mithilfe von Powershell, language="de" durch "ro" ersetzen.

    Wie geht das, wenn ich auf den Wert in der "<>" ersetzen will.


    Danke euch.
    Donnerstag, 8. Februar 2018 12:16

Antworten

  • Hallo,

    Das sollte so funktionieren:

    $xml = [xml]'<?xml version="1.0" ?><translation language="de" />'
    $xml.translation.language = "ro"

    Den Inhalt der xml Files kannst Du per Get-Content laden und anschliessend mit $xml.Save("filename.xml") wieder speichern
    Donnerstag, 8. Februar 2018 12:55
  • Hallo,

    Der Ansatz geht meines Wissens nur bei so einer Syntax:

    $xml = [xml]'<translation><language>de</language></translation>'
    $xml.translation.language = 'ru'

    Das könnte deine Lösung sein :

    $xml = [xml]'<?xml version="1.0" ?><translation language = "de" />'
    $node = $xml.SelectSingleNode("//translation[@language='de']")
    $node.language = 'ro'

    grüße Andy



    Freitag, 9. Februar 2018 08:32

Alle Antworten

  • Hallo,

    Das sollte so funktionieren:

    $xml = [xml]'<?xml version="1.0" ?><translation language="de" />'
    $xml.translation.language = "ro"

    Den Inhalt der xml Files kannst Du per Get-Content laden und anschliessend mit $xml.Save("filename.xml") wieder speichern
    Donnerstag, 8. Februar 2018 12:55
  • Hab ich auch schon probiert, will aber leider nicht.
    Donnerstag, 8. Februar 2018 15:38
  • Hallo,

    Der Ansatz geht meines Wissens nur bei so einer Syntax:

    $xml = [xml]'<translation><language>de</language></translation>'
    $xml.translation.language = 'ru'

    Das könnte deine Lösung sein :

    $xml = [xml]'<?xml version="1.0" ?><translation language = "de" />'
    $node = $xml.SelectSingleNode("//translation[@language='de']")
    $node.language = 'ro'

    grüße Andy



    Freitag, 9. Februar 2018 08:32
  • Wenn die XML-Datei tatsächlich so aussieht wie oben berschrieben, funktionieren beide Lösungen einwandfrei. Wenn das bei dir nicht der Fall ist, poste bitte mal einen Auzug der Original-XML und genau den Code den du zum ändern benutzt hast.


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Code Manager v5: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Freitag, 9. Februar 2018 11:41
    Moderator
  • wenn es nicht unbedingt Powershell sein muss nimm gratis notepad++ und geh auf suchen ersetzen in Dateien.

    Chris

    Montag, 12. Februar 2018 18:47