Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Jabber XMLStream parsen

  Alt 20. Feb 2006, 14:51
Ich lege mir beim Senden einer Nachricht ein paar extra Knoten in dem XMLStream an. Der sieht dann so aus:
XML-Code:
<message id="JCOM_2" to="mp@datawerk.de" from="mp-test@datawerk.de/DWJabberClient">
  <foobar type="mp-extra-tag">
    <color>clOlive</color>
  </foobar>
  <body>test</body>
</message>
Jetzt wollte ich den natürlich wieder auslesen und alle Tags erhalten. Also foobar, color und body. Ich habe versucht dies mit einer rekursiven Prozedur zu lösen, nur bleibe ich immer wieder stecken, weil ich entweder nicht den XMLTag bekomme oder den XMLIterator oder den Inhalt des Tags. Ich weiß auch gar noch nit, wie doe einzelnen Elemente zusammenarbeiten sollen: http://jabbercom.sourceforge.net/xmlcom.html

Das habe ich bisher:
Delphi-Quellcode:
procedure GetTags(AXMLIteratorEx: IXMLIteratorEx);
var
  XMLIterator: IXMLIteratorEx;
  XMLTag: IXMLTag;
  XMLNode: IXMLNode;
begin
  if AXMLIteratorEx.HasNext then
  begin
    XMLNode := AXMLIteratorEx.Next;
    if XMLNode.IsTag then
    begin
      ShowMessage(XMLNode.Name);
      GetTags(XMLTag.Query(XMLNode.Name));
    end;
  end;
end;
Hier noch ein anderer Versuch:
Delphi-Quellcode:
procedure TForm1.GetTags(AXMLIterator: IXMLIterator);
var
  XMLIterator : IXMLIteratorEx;
  XMLTag : IXMLTag;
  XMLNode : IXMLNode;
begin
  if AXMLIterator.HasNext then
  begin
    XMLNode := AXMLIterator.Next;
    if XMLNode.IsTag then
    begin
      ShowMessage(XMLNode.Name);
      XMLTag := JabberSession.CreateXMLTag;
      GetTags(XMLTag.Query(XMLNode.Name));
    end;
  end;
end;
Damit bekomme ich den tag "foobar" aber nicht mehr den Tag "color".

Ich habe auch schon versucht das ganze mit einem XMLTag oder XMLNode als Paramter aufzubauen, aber da bin ich immer genauso stecken geblieben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat