AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Wie spitze Klammern im Text zulassen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie spitze Klammern im Text zulassen?

Ein Thema von McMorton · begonnen am 2. Mai 2006 · letzter Beitrag vom 3. Mai 2006
Antwort Antwort
McMorton

Registriert seit: 8. Mär 2006
45 Beiträge
 
#1

Wie spitze Klammern im Text zulassen?

  Alt 2. Mai 2006, 21:56
Hallo

Ich habe eine Frage zum MSXML-Parser.

Ich habe mit dem Parser eine XML-Struktur erstellt.
Einem Knoten kann über eine Eingabefeld Text zugewiesen werden.
Jetzt kann es aber passieren das dieser Text auch ein XML-Tag ist.
Der Parser ersetzt nun (beim Parsen) die Klammern durch die Zeichen < und > .
Kann ich das irgentwie verhindern (also das die Klammern bleiben)?

Delphi-Quellcode:
self.XmlObject.ChildNodes['BLA'].Text := aString; //aString ist hier z.B.: '<Test></Test>'

self.XmlObject.SavetoXML(aString);

//aString ist nun: <BLA>&lt;Test&gt;&lt;/Test&gt;</BLA>
//Ich brauche aber: <BLA><Test></Test></BLA>
ich könnte zwar hinterher die Zeichen austauschen, aber gibt es da ev. eine bessere Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.643 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wie spitze Klammern im Text zulassen?

  Alt 2. Mai 2006, 22:00
Du möchstest also, das <test> ein vollwertiger Knoten des XML-Dokumentes ist? Dann musst Du ihn auch als Knoten im Dokument einfügen.
Sven Harazim
--
  Mit Zitat antworten Zitat
McMorton

Registriert seit: 8. Mär 2006
45 Beiträge
 
#3

Re: Wie spitze Klammern im Text zulassen?

  Alt 2. Mai 2006, 22:06
Ja. Aber wie mach ich das denn? Es ist ja nicht immer ein Tag.
Manchmal ist es auch nur ein Text (je nachdem was der Benutzer eingibt).

Müsste ich dan prüfen, ob es ein gültiges XML-Element ist? Wen ja: als Knoten einbinden, wen nicht, nur als Text einbinden?
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.643 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Wie spitze Klammern im Text zulassen?

  Alt 2. Mai 2006, 22:12
Du könnstest Dir auch eine eigene Prozedur schreiben, in der Du selbst die Daten in die XML-Datei speicherst. Dann liegt es an Dir, was Du raus schreibst.
Sven Harazim
--
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#5

Re: Wie spitze Klammern im Text zulassen?

  Alt 2. Mai 2006, 23:55
Wann genau stößt du denn auf ein Problem mit den &lt; und &gt;?
Das ist ja schon sinnvoll, dass die spitzen Klammern durch die entsprechenden Zeichen ersetzt werden, sonst kriegt der Parser gewaltige Probleme. Einzige Möglichkeit, die mir auf Anhieb einfiele, wäre, den Text in CDATA-Tags zu setzen, sähe dann so aus:
Code:
<![CDATA[<Test></Test>]]>
Dabei wird alles, was zwischen den inneren eckigen Klammern liegt, nicht vom Parser interpretiert.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
sgmeiner

Registriert seit: 22. Feb 2006
10 Beiträge
 
#6

Re: Wie spitze Klammern im Text zulassen?

  Alt 3. Mai 2006, 08:46
Eventuell kannst du ja auch sowas probieren:

Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var
  MainDoc, TempDoc: DOMDocument40;
  RootNode, DataNode: IXMLDOMNode;
begin
  MainDoc := CoDOMDocument40.Create;
  RootNode := MainDoc.appendChild(MainDoc.createElement('hauptknoten'));
  DataNode := RootNode.appendChild(MainDoc.createElement('userdaten'));
  TempDoc := CoDOMDocument40.Create;
  TempDoc.loadXML(EditInput.Text);

  if Assigned(TempDoc.firstChild) then
    DataNode.appendChild(TempDoc.firstChild)
  else
    DataNode.text := EditInput.Text;

  Memo.Text := MainDoc.xml;
end;
Funktioniert natürlich nur, wenn von EditInput (oder sonst woher) ein gültiger XML-Text kommt.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.643 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Wie spitze Klammern im Text zulassen?

  Alt 3. Mai 2006, 08:51
Zitat:
Code:
<![CDATA[<Test></Test>]]>
@McMorton
Womit wir bei Deinem redundanten Thread angekommen wären.
Sven Harazim
--
  Mit Zitat antworten Zitat
marabu

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

Re: Wie spitze Klammern im Text zulassen?

  Alt 3. Mai 2006, 10:04
Hallo.

Ich würde bei der Eingabe prüfen, ob der Benutzer gültigen XML-Code bereitstellt und den String in Abhängigkeit davon weiter verarbeiten:

Delphi-Quellcode:
uses
  MSXML2;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  doc, tmp: IXMLDOMDocument;
  s: String;
begin
  doc := CoDomDocument.Create;
  doc.async := false;
  doc.documentElement := doc.createElement('root');

  tmp := CoDomDocument.Create;
  tmp.async := false;

  s := '<test>marabu</test>';
  if InputQuery('Input', 'XML', s) then
    if tmp.loadXML(s)
      then doc.documentElement.appendChild(tmp.documentElement)
      else doc.documentElement.appendChild(doc.createTextNode(s));
  ShowMessage(doc.xml);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:10 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