AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

& in einer XML-Datei

Offene Frage von "Tigermoon"
Ein Thema von Tigermoon · begonnen am 17. Mai 2005 · letzter Beitrag vom 17. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2   
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#1

& in einer XML-Datei

  Alt 17. Mai 2005, 07:45
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
Stephanie
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 07:50
Normalerweise wird beim Speichern ein Ampersand als character entity & weggeschrieben.

Grüße vom marabu
  Mit Zitat antworten Zitat
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 07:56
ich speichere den inhalt in einem cdata

vielleicht liegt es daran???
Stephanie
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 08:34
Zitat von Tigermoon:
ich speichere den inhalt in einem cdata
vielleicht liegt es daran???
Zeige mal ein Minimal-Dokument mit deinem Problem.

marabu
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 08:36
Dann eigentlich erst recht nicht, denn IMHO wird
Code:
<![CDATA[Irgendein Text mit & zwischendrin]]>
auch so wieder angezeigt.
  Mit Zitat antworten Zitat
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 09:13
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:
    
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;

      // 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;
die xml datei selbst sieht so aus

Delphi-Quellcode:
<?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>
also ich sehe im shellecexute nur hallo da stehen sonst nichts mehr
alles anderes is weg!!!
Stephanie
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 10:14
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
  Mit Zitat antworten Zitat
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 10:25
und wie sieht das & für ihn (den pc) aus
wenn ich fragen darf?

zeilenumruch is #10
& is ???
Stephanie
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 11:02
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:
StringReplace(meinText, '&' , '%26' ,[rfReplaceALL]);
StringReplace(meinText, #$26, '%26' ,[rfReplaceALL]);
Die Verschlüsselung eines Zeichens kannst du sehen, wenn du das Programm Zeichentabelle aus deinem Windows-Zubehör aufrufst.

marabu
  Mit Zitat antworten Zitat
Tigermoon

Registriert seit: 11. Mär 2005
Ort: Baumholder
100 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: & in einer XML-Datei

  Alt 17. Mai 2005, 11:18
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;
Stephanie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz