![]() |
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:
Aber immer wenn ich versuche ein solchen, <Folder Name="Sonstiges"/>, XML-Knoten zu erstell
<?xml version="1.0"?>
<Bookmarks> <Folder Name="Eigene Adresseinträge"/> <Folder Name="Touristische Infos"/> <Folder Name="Übernachtungsmö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> werden die Anführungszeichen als " eingetragen.
Delphi-Quellcode:
Hoffe ihr könnt mir helfen.
JvSimpleXML1.Root.Items.Add('Folder Name="'+edit2.text'"')
mcflaytasche |
Re: Anführungszeichen werden als ASCII eingetragen.
Code:
Hast du mal nachgesehn, was passiert, wenn du die " wegläßt?
JvSimpleXML1.Root.Items.Add('Folder Name="'+edit2.text[b][color=#ff0000]+[/color][/b]'"')
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. |
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.
|
Re: Anführungszeichen werden als ASCII eingetragen.
Hi, so geht das:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.ButtonClick(Sender: TObject);
var e: TJvSimpleXmlElem; begin e := SimpleXml.Root.Items.Add('Folder'); e.Properties.Add('Name', 'Sonstiges'); ShowMessage(SimpleXml.XMLData); end; |
Re: Anführungszeichen werden als ASCII eingetragen.
Hallo marabu,
jetz funzt es, bin ich glücklich. Danke für die Hilfe. Gruß mcflaytasche |
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 |
Re: Anführungszeichen werden als ASCII eingetragen.
Hi.
Das könnte dir weiterhelfen:
Delphi-Quellcode:
Benutzen kannst du die Funktion so:
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;
Delphi-Quellcode:
Grüße vom marabu
var
e: TJvSimpleXmlElem; begin if ChildByProperty(SimpleXml.Root, 'Folder', 'Name', 'Sonstiges', e) then ShowMessage('folder already exists'); end; |
Re: Anführungszeichen werden als ASCII eingetragen.
Guten Morgen marabu,
leider bekomme ich eine Fehlermeldung wenn ich Deinen Code eingebe: Zitat:
Und wo beziehst Du Dein wissen über symplexml? Gruß mcflaytasche |
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 |
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 |
Re: Anführungszeichen werden als ASCII eingetragen.
Halli, hallo, hallöle,
bin es schon wieder. Wie kann ich den jetzt in diesem Knoten der schon vorhanden ist weitere Einträge erstellen? Sitze hier und mir qualmt schon die Mütze. Gibt es irgendwo Infos über solche Sachen? Gruß Stefan |
Re: Anführungszeichen werden als ASCII eingetragen.
Hallo Stefan,
ich bin vor vielen Jahren über NROFF und GML zu SGML, HTML und dann zu XML gekommen. Da ich die XML Spezifikation ganz gut verinnerlicht habe, weiß ich nach was ich in einer unabhängigen Parser-Implementierung Ausschau halten muss. Das einzige Problem mit der Jedi-Komponente SimpleXML sind die ungewöhnlichen Bezeichner für Methoden und Eigenschaften. Aber selbst mit dieser Hürde war es nicht wirklich schwierig die richtige Vorgehensweise zu finden - ohne Blick in die Quellen. Du siehst: keine Zauberei, keine Tricks. Vielleicht hat auch das eine Semester "Chinesische Weisheit" geholfen. Wenn ich Quellen benutze um deine Fragen zu beantworten, dann werde ich die aufdecken. Ehrensache. Dein neuerliches Problem ist eigentlich schon gelöst. Die Funktion ChildByProperty() liefert dir ja ein Element e, welchem du dann mit e.Items.Add() wieder Sub-Elemente zuordnen kannst. Freundliche Grüße vom marabu |
Re: Anführungszeichen werden als ASCII eingetragen.
Hallo marabu,
:hello: ein riesiges Danke schön für Deine Hilfe. :hello: Zitat:
Zitat:
Zitat:
Hoffe ich komme nun alleine weiter. :zwinker: Ein Hoffnungvoller Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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