Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Delphi"


Паскаль, Делфи


 #0 ID © 20.09.06 16:24:01 - 22.09.06 12:33:31

работа с TXMLDocument



Доброго времени суток!
Помогите, а то замучился. С TXMLDocument никогда не работал, а нужно срочно сделать две простые вещи.
Есть xml

<?xml version="1.0" encoding="Windows-1251" standalone="no"?>
<!DOCTYPE AccExtract SYSTEM "accextract.dtd">
<AccExtract>
  <ColRow>2</ColRow>
  <Row>
    <Name>Наименование фирмы</Name>
    <Cod>12345678</Cod>
    <Accaunt>26006123456</Accaunt&­gt;
    <SumOfRemain>200.02</SumOfRema­in>
    <SumOfGuarantee>1000.01</SumOf­Guarantee>
  </Row>
</AccExtract>

D Делфях необходимо открыть этот файл, клонировать несколько раз секцию Row, а затем пройтись, и заполнить значениями эти секции.
Интуиция подсказывает, что это должн обыть очень просто для тех, хто с этим сталкивался и работал :)
Я споткунся на:

var    t:ixmlnode;
...
 XMLDocument1.FileName:='D:\111\XML\AccE­xtract.xml';
 XMLDocument1.Active:=true;
 t:=XMLDocument1.ChildNodes.FindNode('Ac­cExtract').ChildNodes.FindNode('Row');

//t - принимает значение nil а должно быть что-то

XMLDocument1.SaveToFile('D:\111\XML\Acc­Extract2.xml');

Цитата

 #1 ID © 22.09.06 12:33:31

разобрался:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i:integer;
begin
 XMLDocument1.FileName:='D:\111\XML\AccE­xtract.xml';
 XMLDocument1.Active:=true;
  for i:=0 to XMLDocument1.ChildNodes.Count-1 do
    begin
      ReadNodInfo(XMLDocument1.Node.ChildNode­s.Get(i));
    end;
 XMLDocument1.SaveToFile('D:\111\XML\Acc­Extract2.xml');
end;


procedure TForm1.ReadNodInfo(XmlNode:ixmlnode);
var
   CurNod:ixmlnode;
   CountNod, CountChild : integer;
   NameNode, ValueNode, temp: WideString;

begin
       temp:=XmlNode.XML;
       if XmlNode.ChildNodes.Count > 1 then
           begin
            for CountChild:=0 to XmlNode.ChildNodes.Count-1 do
               begin
                  temp:=XmlNode.XML;
                  ReadNodInfo(XmlNode.ChildNodes.Get(Coun­tChild));
               end;
           end
         else
           begin
            NameNode:=XmlNode.NodeName;
            if XmlNode.IsTextElement then
              begin
                ValueNode:=XmlNode.NodeValue;
                ShowMessage('Nod:='+NameNode+' &#231;&#237;&#224;&#247­;&#229;&#237;&#232;&#229­;:'+ValueNode);
              end
           end;
end;





  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов