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.