XML Lesen, Sonderzeichen ,;%$ Probleme mir xDocument

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Dksksm.

    XML Lesen, Sonderzeichen ,;%$ Probleme mir xDocument

    Hallo,
    muss mich an euch wenden, da ich nicht weiter weiß im Moment.
    Probiere seit 2 Tagen darum rum und komme nicht wetier.

    Habe eine XML-Datei :

    XML-Quellcode

    1. <?xml version="1.0" encoding="ISO-8859-1"?>
    2. <Projekt>
    3. <ProjektbezeichnungKunde></ProjektbezeichnungKunde>
    4. <Projektbezeichnung1>Getorstr. 1, Lameln, Umstellung VCX$R auf MRT & KHM129</Projektbezeichnung1>
    5. <Projektbezeichnung2></Projektbezeichnung2>
    6. <Angebotdatum>27.3.2023</Angebotdatum>
    7. ...


    den ich mit diesem Code:

    VB.NET-Quellcode

    1. Try
    2. Dim xml = XDocument.Load(_ganzerPfad)
    3. txb_ProjektBezeichnung.Text = xml.<Projekt>.<Projektbezeichnung1>.Value
    4. txb_ProjektAngebotNr.Text = xml.<Projekt>.<AngebotNummerProjekt>.Value.ToString
    5. dtp_AnEingDatum.Value = CDate(xml.<Projekt>.<Angebotdatum>.Value)
    6. Catch ex As Exception
    7. Dim _r As DialogResult
    8. _r = MessageBox.Show("Fehler beim auswerten der XML-Datei! Ggf. XML nicht komplett?" & vbCrLf &
    9. "Datei im Editor öffnen?" & vbCrLf & ex.Message,
    10. "Fehler", MessageBoxButtons.YesNo, MessageBoxIcon.Stop)
    11. If _r = DialogResult.Yes Then
    12. Dim p As New Process()
    13. 'p.StartInfo.RedirectStandardInput = True
    14. p.StartInfo.Arguments = _ganzerPfad
    15. p.StartInfo.FileName = "C:\Windows\System32\notepad.exe"
    16. 'p.StartInfo.UseShellExecute = False
    17. p.Start()
    18. End If
    19. Exit Sub
    20. End Try

    auslesen.

    Dabei habe ich das Problem das er mit $% und & usw. nicht zurecht kommt.
    Ich hab hin und her probiert, aber es gibt so viele Lösungen (sage ich mal) das ich mich mittlerweile nicht mehr auskenne...

    Könntet Ihr mir da freundlicher Weiße unter die Arme greiffen?

    Vielen Dank vorab, Gruß

    M
    Da würd ich doch mal behaupten, dass die XML falsch erstellt wurde. Die Sonderzeichen müssten dort schon codiert/escaped werden/sein.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke für die rasche Antwort!

    ah ok... also lässt es nicht nicht anders machen... Mist! Ich hatte so gehofft das ich genau diese Antwort nicht erhalten. Die XML Datei wird leider von einem externen an uns übergeben und da ist leider nicht mit Unterstützung zu rechnen. (Wurde schon angedeutet, so oder lass es... nach dem Motto)...

    Ok, keine Alternative?
    Yep, der Ausschnitt "MRT & KHM129" in der XML müsste bei richtiger Erstellung "MRT &amp; KHM129" sein, jedenfalls bei UTF8!
    Ansonsten weiß ich sowieso nicht, was der OP wirklich meint. Sein Code ist unerklärt und unvollständig aber nachvollziehbar.
    Was nicht nachvollziehbar und untestbar ist, wenn man eine unvollständige Text-XML zeigt.

    Nachtrag im Text und: So ein Encoding kenn ich gar nicht, vielleicht ist meine ganze Antwort Müll.
    Naja, die XML (ggf. mit einem eigenen Programm) nachzubearbeiten wäre vielleicht möglich, aber sinnfreier Zeitaufwand.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dksksm schrieb:

    Dim Reader As StreamReader = New StreamReader(_ganzerPfad, Encoding.GetEncoding(28591)) 'setzt "Imports System.Text" voraus
    Dim xml = XDocument.Load(Reader)


    uh wow ... ganz neue Richtung. Eben getestet, ja einfach nur mal C&P ... läuft bis zu dieser Zeile

    XML-Quellcode

    1. <ExcelFaName1>A-CA GmbH & Co.KG</ExcelFaName1>

    und meckert an dem & Zeichen...

    dein Vorschlag: wo kann ich da mich einlesen ?
    Bilder
    • 6.PNG

      5,16 kB, 400×137, 39 mal angesehen
    Das &-Zeichen war aber schon in Post#1 zu finden. Jene Zeile wird plötzlich richtig verarbeitet?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Jene Zeile wird plötzlich richtig verarbeitet?

    nein ... bei der Datei vorhin wars an gleicher Stelle, hab dann noch eine Datei probiert und da ist dann Zeile 16 das & drinnen...

    wollte nur die Fehlermeldung die ausgegeben wird zeigen. Sorry, war keine Absicht Verwirrung zu stiften

    EDIT:

    Ich rede noch mal mit denen, vielleicht lassen Sie sich doch iwie auf eine Änderung ein. Will hier nicht total beschäftigen mit sowas. Soll ja kein Ewigkeitswerk werden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „michl75“ ()

    Na dann hast du Pech gehabt, wie gesagt ich kenn das Encoding für XML nicht, es ist ungewöhnlich. Normalerweise wird UTF8 oder auch UTF16 verwendet.
    Wo du dich einlesen kannst? Na einfach mal Tante Google fragen und nach "XML encoding ISO-8859-1" suchen.
    Das Problem wird sein, dass die Datei die du bekommst gar kein echtes encoding aufweisst. Es ist vermutlich "handgeschriebener" Text, also alles manuell zusammengesetzt.
    Leider sehe ich solchen Mist bei Weltkonzernen auch. Da werden die wildesten Sachen zusammengestöpselt oder wurden. Die Lebenszeit von solcher Software ist oft irre lang, weil niemand die gewachsene Komplexität mehr durchblickt und sich damit nichts einfach mal eben so durch "anständige" Programme ersetzen läßt.

    Nachtrag: Ich würde zu den XML-Basics zurückgehen und den umständlichen Weg mit XMLTextReader wählen. Im Grunde ist es die Vorgehensweise, die auch bei dem Post #5 von @VaporiZed zum Tragen käme.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dksksm“ ()

    VB.NET-Quellcode

    1. Try
    2. '-------------------------------------------
    3. Dim t As String = File.ReadAllText(_ganzerPfad)
    4. t = t.Replace(" & ", " &amp; ")
    5. File.WriteAllText(_ganzerPfad, t)
    6. '----------------------------------------------
    7. Dim xml = XDocument.Load(_ganzerPfad)
    8. txb_ProjektBezeichnung.Text = xml.<Projekt>.<Projektbezeichnung1>.Value
    9. '....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eierlein“ ()