none
xml Deklaration Encoding RRS feed

  • Frage

  • Hallo zusammen,

    ich möchte eine Reihe von XML Dateien auslesen.

    Leider kann ich die Dateien nicht einlesen, da in der erste Zeile folgender Code steht

    <?xml version="1.0" encoding="UTF-16" ?>

    Wenn ich nun die Daten holen will mit:

    $XML = [xml] (Get-Content -Path C:\test\1.xml)

    Bekomme ich diese Fehlermeldung:

    Der Wert "System.Object[]" kann nicht in den Typ "System.Xml.XmlDocument" konvertiert werden. Fehler: "Ein 
    Name darf nicht mit dem Zeichen '.', hexadezimaler Wert 0x00, beginnen. Zeile 1, Position 2."
    In Zeile:1 Zeichen:1

    Nehme ich diese Zeile heraus funktioniert alles bestens.

    Die XML Dateien werden durch ein Programm angelegt,daher schließe ich den Fehler dort aus!Kennt das von euch einer bzw. kann mir das erklären oder helfen?Ich möchte eigentlich die xml Dateien einlesen und meine notwendigen Informationen ausgeben lassen.

    Ich freue mich auf eure Hilfe und Beiträge!

    Nachtrag:

    OK, ich habe eine gute Seite gefunden die es erklärt.

    http://de.selfhtml.org/xml/regeln/xmldeklaration.htm
    Leider löst es noch nicht mein Problem, dass ich die Datei einlesen kann


    Gruß Toni



    • Bearbeitet tonibert Donnerstag, 12. März 2015 11:32
    Dienstag, 10. März 2015 12:59

Antworten

  • Dann befürchte ich, wird es schwierig, ohne Ansicht der XML-Struktur lassen sich keine Fehler finden.
    Ich bin aber eigentlich ziemlich sicher das dein Problem mit der Zeichencodierung (encoding) der Datei zu tun hat.
    UTF-16 ist Unicode, meines Wissens nach... mhm... versuch doch mal folgendes:
     

    $XML = [xml] (Get-Content -Path $path -Encoding Unicode)
    
    # oder 
    
    $XML = [xml] (Get-Content -Path $path -Encoding Unknown)
     
    Falls das nichts hilft, frag doch mal den Hersteller des Tools an, die wissen am ehesten welche Spezialitäten die Dateien enthalten, die ihr Produkt auswirft.  

    Grüße, Denniver

      

    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    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.

    Mittwoch, 11. März 2015 17:30
    Moderator

Alle Antworten

  • Hallo,

    ich kann Dateien mit der XML-Deklaration problemlos einlesen.

    Aber wenn es ansonsten ohne diese Deklaration geht kannst Du die erste Zeile der Datei ueberlesen. Wie das geht hast Du eigentlich hier schon bei deiner letzten Frage gezeigt bekommen. :-)

    $XML = [xml](Get-Content -Path C:\test\1.xml | Select-Object -Skip 1)

    Beste Gruesse
    brima



    • Bearbeitet brima Dienstag, 10. März 2015 13:53
    Dienstag, 10. März 2015 13:30
  • $XML = [xml] (Get-Content -Path C:\test\1.xml | Select-Object -Skip 1)


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Dienstag, 10. März 2015 13:35
  • Wenn die XML-datei gültig ist, wird die Deklarationszeile automatisch richtig verarbeitet. Die muß man nicht überspringen.

    Da sowohl die von dir gepostete Deklarationzeile, als auch der Code zum einlesen richtig sind, muß der Fehler entweder im XML der Quelldatei oder in der Codierung der Quelldatei liegen. Poste mal eine komlette XML.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    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.

    Dienstag, 10. März 2015 14:07
    Moderator
  • Hallo zusammen!

    @Brima :Bei deinem Code: der Gleiche Fehler

    @Peter: dementsprechend auch der gleiche Fehler

    Get-Content -Path C:\test\1.xml | Select-Object -Skip 1

    Funktioniert...

    Sobald ich

    [xml]

    nehme kommt die Fehlermeldung!

    @Denniver:

    Ich kann die XML leider nicht posten, da es sich um Firmendaten handelt.Aber ich befürchte , dass es an den XML-Exporten liegt.

    Nehme ich eine andere XML-Datei funktioniert alles.Die Dateien die von meinem Herstellerprogramm(Third-Party) erstellt werden funktioneren nicht.

    Im Browser kann ich jedoch alle Dateien öffnen ...:/


    Gruß Toni


    • Bearbeitet tonibert Mittwoch, 11. März 2015 08:48
    Mittwoch, 11. März 2015 07:27
  • Dann befürchte ich, wird es schwierig, ohne Ansicht der XML-Struktur lassen sich keine Fehler finden.
    Ich bin aber eigentlich ziemlich sicher das dein Problem mit der Zeichencodierung (encoding) der Datei zu tun hat.
    UTF-16 ist Unicode, meines Wissens nach... mhm... versuch doch mal folgendes:
     

    $XML = [xml] (Get-Content -Path $path -Encoding Unicode)
    
    # oder 
    
    $XML = [xml] (Get-Content -Path $path -Encoding Unknown)
     
    Falls das nichts hilft, frag doch mal den Hersteller des Tools an, die wissen am ehesten welche Spezialitäten die Dateien enthalten, die ihr Produkt auswirft.  

    Grüße, Denniver

      

    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    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.

    Mittwoch, 11. März 2015 17:30
    Moderator
  • Guten Morgen,

    in meinem Fall war die Lösung

    $XML = [xml] (Get-Content -Path $path -Encoding Unicode)

    ÜBERRRRAAAAGEND :-)

    Ich danke dir Denniver!!


    Gruß Toni

    Donnerstag, 12. März 2015 07:35