AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML File lesen

Ein Thema von Klaus01 · begonnen am 31. Okt 2006 · letzter Beitrag vom 31. Okt 2006
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#1

XML File lesen

  Alt 31. Okt 2006, 10:26
Guten Morgen,

mit
Delphi-Quellcode:
ANode: IXMLNode;
result : String;
...

ANode:=XMLDocument1.DocumentElement.ChildNodes.FindNode('channel');
result:=ANode.ChildNodes['title'].text;
kann ich ohne Probleme so einen Knoten einlesen.

XML-Code:
- <channel>
  <title>Computerclub Zwei</title>
Der Code hat verständlicherweise Probleme wenn
im XML File so etwas steht.
XML-Code:
- <channel>
- <title>
- <![CDATA[ Movie Time ]]>
  </title>
Da ich mit XML noch so gut wie nichts gemacht habe eine etwas blöde Frage:

Wie lese ich so etwas ein und wie gestalte ich den Code möglichst universell so
daß er auf auch andere Formate reagieren und diese einlesen kann?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: XML File lesen

  Alt 31. Okt 2006, 13:00
Habe das jetzt so gelöst.

Delphi-Quellcode:
ANode:=XMLDocument1.DocumentElement.ChildNodes.FindNode('channel');
BNode:= ANode.ChildNodes.FindNode('title');

if (BNode.NodeType = ntElement) then

  try
    result:=BNode.Text;
  except
    on e: Exception do
      begin
        result:=copy(BNode.XML,pos('CDATA[',BNode.XML)+6,length(BNode.XML));
        result:=copy(result,1,pos(']',result)-1);
      end;
  end;
Ist nicht sehr elegant, wenn jemand eine bessere Lösung bzw.
Lösungsansatz hat bitte melden.

Was mir daran nicht so ganz passt ist, daß ich erst eine Exception abwarten muß
um zu erfahren daß das Element kein Textelement ist.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

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

Re: XML File lesen

  Alt 31. Okt 2006, 13:18
Hallo Klaus,

probiere mal das hier:

Delphi-Quellcode:
function GetText(e: IXMLDOMElement): String;
var
  i: Integer;
  n: IXMLDOMNode;
begin
  Result := '';
  for i := 0 to Pred(e.childNodes.length) do
  begin
    n := e.childNodes.item[i];
    if n.nodeType = NODE_TEXT then
      Result := Result + n.text else
    if n.nodeType = NODE_ELEMENT then
      Result := Result + GetText(n as IXMLDOMElement) else
    if n.nodeType = NODE_CDATA_SECTION then
      Result := n.nodeValue else
    // skip any other nodeType
      ;
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: XML File lesen

  Alt 31. Okt 2006, 13:40
Wahnsinn!!


Delphi-Quellcode:
function getText(aNode:IXMLNode):String;
var
  i: Byte;
  dummyNode: IXMLNode;
begin

  for i:=0 to pred(aNode.ChildNodes.Count) do
    begin
      dummyNode:=aNode.ChildNodes.Get(i);
      if dummyNode.NodeType = ntText then
       result:=result+ANode.Text
      else
       if dummyNode.NodeType = ntElement then
         result:=result+dummyNode.GetText
       else
         if dummyNode.NodeType = ntCData then
            result := dummyNode.NodeValue
         else
           result :='';
      end;
end;
Habe es nur eine wenig umgestrickt.

Danke!

Grüße
Klaus
Klaus
  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 00:17 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