Я хочу просмотреть XML с помощью TTreeView.Чтобы связать узлы дерева с узлами XML с атрибутами, я использовал следующий синтаксис:
var tv: TTreeView; tn1, tn2: TTreeNode; xn: IXMLNode;
if xn.AttributeNodes.Count > 0 then
tn2 := tv.Items.AddChildObject( tn1, xn.NodeName, @xn )
else
tn2 := tv.Items.AddChild( tn1, xn.NodeName );
.. и позже в программе:
var tv: TTreeView; pxn: ^IXMLNode; i: integer;
pxn := tv.Selected.Data;
for i := 0 to iXML.AttributeNodes.Count-1 do
ShowMessage ( pxn^.AttributeNodes[i].LocalName + ' = ' +
pxn^.AttributeNodes[i].Text );
, что приводит к исключению ..Насколько я могу понять, это связано с тем, что я указываю на интерфейс, а не на объект.
Можно ли ссылаться на фактический объект XML вместо интерфейса?Что произойдет с этой ссылкой, если новые XML-узлы будут вставлены или удалены из дерева?
Или есть другое прямое решение?
Вся помощь приветствуется!