![]() |
& in einer XML-Datei
Morgen,
habe ein Problem, hoffentlich kann mir jemand helfen... wenn ich den inhalt meines memofeldes in einer xml datei speichere und in dem textinhalt ein "&" war dann wir die datei beim auslesen nur bis zum "&" ausgelesen und nicht weiter. was kann ich da machen? Steffi |
Re: & in einer XML-Datei
Normalerweise wird beim Speichern ein Ampersand als character entity & weggeschrieben.
Grüße vom marabu |
Re: & in einer XML-Datei
ich speichere den inhalt in einem cdata
vielleicht liegt es daran??? |
Re: & in einer XML-Datei
Zitat:
marabu |
Re: & in einer XML-Datei
Dann eigentlich erst recht nicht, denn IMHO wird
Code:
auch so wieder angezeigt.
<![CDATA[Irgendein Text mit & zwischendrin]]>
|
Re: & in einer XML-Datei
muss mich berichtigen
das zurück auslesen ins memofeld funktioniert es funktioniert nur nicht wenn ich es in einen shellexecute einlesen möchte dann schneidert es hinter dem "&" ab quellcode zum aus lesen und erzeugen der shellexecute
Delphi-Quellcode:
die xml datei selbst sieht so ausif(FileExists(dateiname_laden)) then begin // Datei wird gespeichert, das immer die aktuellsten Eingaben gespeichert sind datei_speichern('Mail'); // Anlegen eines Objektes zum Auslesen XML_File := newXMLDocument; // Datei laden XML_File.LoadFromFile(dateiname_laden); montag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['MONTAG'].ChildNodes['TEXT'].text; dienstag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['DIENSTAG'].ChildNodes['TEXT'].Text; mittwoch := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['MITTWOCH'].ChildNodes['TEXT'].Text; donnerstag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['DONNERSTAG'].ChildNodes['TEXT'].Text; freitag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['FREITAG'].ChildNodes['TEXT'].Text; // der Text der Email wird erzeugt und das Emailsendenfenster aufgerufen ShellExecute(Application.Handle, 'open', PChar('mailto:'+adressen_an+'?cc='+adressen_cc+'&subject=Wochenbericht ' + Hauptmenu.kalender_woche.Text + '/' + Hauptmenu.jahr_auswahl.Text + '&body=' + 'Montag: '+ Hauptmenu.montag_stunden.Text +' Stunden'+'%0D%0A' + StringReplace(montag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Dienstag: '+ Hauptmenu.dienstag_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(dienstag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Mittwoch: '+ Hauptmenu.mittwoch_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(mittwoch, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Donnerstag: '+ Hauptmenu.donnerstag_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(donnerstag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Freitag: '+ Hauptmenu.freitag_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(freitag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' ), nil, nil, sw_ShowNormal); end;
Delphi-Quellcode:
also ich sehe im shellecexute nur hallo da stehen sonst nichts mehr
<?xml version="1.0" encoding="UTF-8"?>
<WOCHENBERICHT> <KW>20</KW> <JAHR>2005</JAHR> <EINTRAEGE> <MONTAG><TEXT><![CDATA[Hallo & peter]]></TEXT><STUNDEN>1,5</STUNDEN></MONTAG> <DIENSTAG><TEXT><![CDATA[]]></TEXT><STUNDEN>2,5</STUNDEN></DIENSTAG> <MITTWOCH><TEXT><![CDATA[]]></TEXT><STUNDEN>4,5</STUNDEN></MITTWOCH> <DONNERSTAG><TEXT><![CDATA[]]></TEXT><STUNDEN>4</STUNDEN></DONNERSTAG> <FREITAG><TEXT><![CDATA[]]></TEXT><STUNDEN>6,5</STUNDEN></FREITAG> </EINTRAEGE> </WOCHENBERICHT> alles anderes is weg!!! |
Re: & in einer XML-Datei
Du hast kein XML-Problem. Das Ampersand wird im URL schon als Metazeichen gebraucht. Du musst den gleichen Escape-Mechanismus anwenden, wie du ihn schon bei der Zeilenschaltung verwendest. Ersetze in deinen Texten Ampersand durch %26 und alles wird gut.
marabu |
Re: & in einer XML-Datei
und wie sieht das & für ihn (den pc) aus
wenn ich fragen darf? zeilenumruch is #10 & is ??? |
Re: & in einer XML-Datei
Zeilenvorschub (LF, linefeed) ist #10, Wagenrücklauf (CR, carriage return) is #13. Einen Zeilenumbruch in einer Windows-Textdatei stellt das Pascal-Literal #$0D#$0A dar. Wo du es im URL brauchst, da hast du schon den Escape-Mechanismus richtig verwendet: '%0D%0A'. Mach das jetzt noch für die Ampersands - meinetwegen wieder mit StringReplace. Die beiden Zeilen sind gleichwertig:
Delphi-Quellcode:
Die Verschlüsselung eines Zeichens kannst du sehen, wenn du das Programm Zeichentabelle aus deinem Windows-Zubehör aufrufst.
StringReplace(meinText, '&' , '%26' ,[rfReplaceALL]);
StringReplace(meinText, #$26, '%26' ,[rfReplaceALL]); marabu |
Re: & in einer XML-Datei
danke für die hilfe,
lieder hilft mir das nciht weiter wenn ich den shellexecute öffne fehlt immernoch alles nach dem & zeichen Deutsch: Es wird nix angezeigt! Kann mir jemand helfen? Hat jemand ne Idee
Delphi-Quellcode:
if(FileExists(dateiname_laden))
then begin // Datei wird gespeichert, das immer die aktuellsten Eingaben gespeichert sind datei_speichern('Mail'); // Anlegen eines Objektes zum Auslesen XML_File := newXMLDocument; // Datei laden XML_File.LoadFromFile(dateiname_laden); montag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['MONTAG'].ChildNodes['TEXT'].text; dienstag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['DIENSTAG'].ChildNodes['TEXT'].Text; mittwoch := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['MITTWOCH'].ChildNodes['TEXT'].Text; donnerstag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['DONNERSTAG'].ChildNodes['TEXT'].Text; freitag := XML_File.ChildNodes['WOCHENBERICHT'].ChildNodes['EINTRAEGE'].ChildNodes['FREITAG'].ChildNodes['TEXT'].Text; // soll angeblich das problem beheben tut es aber nicht!!! StringReplace(montag, #$26 , '%26', [rfReplaceAll]); StringReplace(dienstag, #$26 , '%26', [rfReplaceAll]); StringReplace(mittwoch, #$26 , '%26', [rfReplaceAll]); StringReplace(donnerstag, #$26 , '%26', [rfReplaceAll]); StringReplace(freitag, #$26 , '%26', [rfReplaceAll]); // der Text der Email wird erzeugt und das Emailsendenfenster aufgerufen ShellExecute(Application.Handle, 'open', PChar('mailto:'+adressen_an+'?cc='+adressen_cc+'&subject=Wochenbericht ' + Hauptmenu.kalender_woche.Text + '/' + Hauptmenu.jahr_auswahl.Text + '&body=' + 'Montag: '+ Hauptmenu.montag_stunden.Text +' Stunden'+'%0D%0A' + StringReplace(montag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Dienstag: '+ Hauptmenu.dienstag_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(dienstag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Mittwoch: '+ Hauptmenu.mittwoch_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(mittwoch, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Donnerstag: '+ Hauptmenu.donnerstag_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(donnerstag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' + '%0D%0A' + 'Freitag: '+ Hauptmenu.freitag_stunden.Text +' Stunden'+ '%0D%0A' + StringReplace(freitag, #10 , '%0D%0A' ,[rfReplaceALL]) + '%0D%0A' ), nil, nil, sw_ShowNormal); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz