Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Anführungszeichen werden als ASCII eingetragen. (https://www.delphipraxis.net/63288-anfuehrungszeichen-werden-als-ascii-eingetragen.html)

mcflaytasche 16. Feb 2006 11:44


Anführungszeichen werden als ASCII eingetragen.
 
Hallo,
bin schon länger hier am suchen
und ich habe immer was gefunden wo ich mir mit helfen konnte
aber diesesmal finde ich keinen Hinweis.

Habe vor mit JvSimpleXML eine XML-Datei auszulesen und Werte hinein zu schreiben.
Das lesen klappt hervorragend aber das schreiben bereitet mir Kopfzerbrechen.
Die XML-Datei sieht so aus:
Code:
<?xml version="1.0"?>
<Bookmarks>
  <Folder Name="Eigene Adresseintr&#xC3;&#xA4;ge"/>
  <Folder Name="Touristische Infos"/>
  <Folder Name="&#xC3;&#x9C;bernachtungsm&#xC3;&#xB6;glichkeiten"/>
  <Folder Name="Essen, Unterhaltung und Sport"/>
  <Folder Name="Verkehr und Info"/>
  <Folder Name="Sonstiges"/>
  <Folder Name="Ponsa Haus">
    <Bookmark Name="Lyngdal i Numedal (N 3624)">
      <ObjectID>202335464691</ObjectID>
      <Layer>Town</Layer>
      <x>1059647</x>
      <y>8370710</y>
    </Bookmark>
    <Bookmark Name="Lyngdal (N 4580)">
      <ObjectID>202335465105</ObjectID>
      <Layer>Town</Layer>
      <x>789160</x>
      <y>7990767</y>
    </Bookmark>
  </Folder>
</Bookmarks>
Aber immer wenn ich versuche ein solchen, <Folder Name="Sonstiges"/>, XML-Knoten zu erstell
werden die Anführungszeichen als &quot; eingetragen.
Delphi-Quellcode:
JvSimpleXML1.Root.Items.Add('Folder Name="'+edit2.text'"')
Hoffe ihr könnt mir helfen.
mcflaytasche

himitsu 16. Feb 2006 15:21

Re: Anführungszeichen werden als ASCII eingetragen.
 
Code:
JvSimpleXML1.Root.Items.Add('Folder Name="'+edit2.text[b][color=#ff0000]+[/color][/b]'"')
Hast du mal nachgesehn, was passiert, wenn du die " wegläßt?
Eventuell müßen/dürfen die ja nicht mit angegeben werden.

Also:
Delphi-Quellcode:
JvSimpleXML1.Root.Items.Add('Folder Name='+edit2.text)

Falls dann keine " in der XML erscheinen, schau doch mal nach, ob welche auftauchen, wenn du zwei Wörter, also irgendwas mit 'nem Leerzeichen zwischendrin in Edit2 übergibst.

mcflaytasche 16. Feb 2006 17:23

Re: Anführungszeichen werden als ASCII eingetragen.
 
Also dann bekomme ich beim Öffnen mit meinem Programm und beim Internet Explorer die Fehlermeldung das sie " fehlen.

marabu 17. Feb 2006 09:27

Re: Anführungszeichen werden als ASCII eingetragen.
 
Hi, so geht das:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  e: TJvSimpleXmlElem;
begin
  e := SimpleXml.Root.Items.Add('Folder');
  e.Properties.Add('Name', 'Sonstiges');
  ShowMessage(SimpleXml.XMLData);
end;
Grüße vom marabu

mcflaytasche 17. Feb 2006 09:50

Re: Anführungszeichen werden als ASCII eingetragen.
 
Hallo marabu,
jetz funzt es, bin ich glücklich.
Danke für die Hilfe.
Gruß
mcflaytasche

mcflaytasche 18. Feb 2006 10:04

Re: Anführungszeichen werden als ASCII eingetragen.
 
Habe schon wieder ein Problem!

Wie bekomme ich es hin das keine Folderknoten gemacht werden die den gleichen Namen haben?
Und wie kann ich dann in einem vorhandenen Folderknoten Einträge einfügen?
Gibt es eigendlich irgendwo eine Hilfe zu JvSimpleXML?
Hoffe auf Eure Hilfe
mcflaytasche

marabu 18. Feb 2006 15:39

Re: Anführungszeichen werden als ASCII eingetragen.
 
Hi.

Das könnte dir weiterhelfen:

Delphi-Quellcode:
function ChildByProperty(
  eParent: TJvSimpleXmlElem; // parent element
  const
  sElement,                  // element name
  sProperty,                 // attribute name
  sPropValue: String;        // attribute value
  var
  eChild: TJvSimpleXmlElem   // first matching element
): Boolean;                  // true if element exists
var
  i: Integer;
begin
  Result := true;
  for i := 0 to Pred(eParent.Items.Count) do
  begin
    eChild := eParent.Items.Item[i];
    if (eChild.Name = sElement)
    and (eChild.Properties.Value(sProperty) = sPropValue) then
      Exit;
  end;
  eChild := nil;
  Result := false;
end;
Benutzen kannst du die Funktion so:

Delphi-Quellcode:
var
  e: TJvSimpleXmlElem;
begin
  if ChildByProperty(SimpleXml.Root, 'Folder', 'Name', 'Sonstiges', e) then
    ShowMessage('folder already exists');
end;
Grüße vom marabu

mcflaytasche 19. Feb 2006 09:40

Re: Anführungszeichen werden als ASCII eingetragen.
 
Guten Morgen marabu,
leider bekomme ich eine Fehlermeldung wenn ich Deinen Code eingebe:
Zitat:

[Error] Nav.pas(108): Undeclared identifier: 'ChildByProperty'
Als was muß ich den die Funktion anmelden?

Und wo beziehst Du Dein wissen über symplexml?

Gruß mcflaytasche

marabu 19. Feb 2006 11:15

Re: Anführungszeichen werden als ASCII eingetragen.
 
Hi.

Wie hast du deinem Programm meine Funktion bekannt gemacht? Es würde schon genügen, wenn du sie vor deinem Aufruf einfügst.

marabu

mcflaytasche 19. Feb 2006 13:46

Re: Anführungszeichen werden als ASCII eingetragen.
 
Danke genau das war es, manchmal sieht man den Wald auch vor lauter Bäumen nicht.

Kannst Du mir irgend wie sagen wo Du bzw. wie Du auf diese Sachen zu Simplexml kommst
oder sind die anderen xml Komponenten identisch?

Gruß
mcflaytasche


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr.
Seite 1 von 2  1 2      

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