Und ich habe immer noch keinen Test-Server am Laufen, aber schau mal:
Delphi-Quellcode:
procedure GetTags(iter: IXMLIteratorEx; s: TStrings);
var
xn: IXMLNode;
begin
while iter.HasNext
do
begin
xn := iter.Next;
if xn.IsTag
then with xn
as IXMLTag
do
begin
s.Add(
Name);
GetTags(children, s);
end;
end;
end;
procedure TDemoForm.ButtonClick(Sender: TObject);
var
xt: IXMLTag;
s: TStringList;
begin
s := TStringList.Create;
xt := Jabber.CreateXMLTag;
with xt
do
begin
Name := '
message';
PutAttrib('
id', '
JCOM_2');
PutAttrib('
to', '
mp@datawerk.de');
PutAttrib('
from', '
mp-test@datawerk.de/DWJabberClient');
with AddTag('
foobar')
do
begin
PutAttrib('
type', '
mp-extra-tag');
AddBasicTag('
color', '
clOlive');
end;
ShowMessage(
xml);
GetTags(children, s);
ShowMessage(s.Text);
s.Free;
end;
end;
Ich habe deine Message nachgebaut und dann wieder analysiert. Da ich noch nicht weiß, ob die Methode
Query() XPath expressions unterstützt, bin ich erstmal auf die property children ausgewichen. Klappt!
marabu