procedure TForm1.bbReadXMLClick(Sender: TObject);
var
XMLDoc: TXMLDocument;
Node,NodeSvc: IXMLNode;
i,j:Integer;
begin
CoInitialize(nil);
XMLDoc:= TXMLDocument.Create(nil);
XMLDoc.LoadFromFile(ExtractFilePath(Application.ExeName)+'otvet.xml');
XMLDoc.Active := true ;
Node := XMLDoc.DocumentElement.ChildNodes[0];
XML в Delphi
Есть у меня к тебе такой вопрос мне нужно прочитать nodes из XML документ, как делать?
Я пробывал так
doc = TXMLDocument.Create(nil);
doc.LoadFromFile('document.xml');
for i = 0 to doc.ChildNodes[1].Count do
ListBox1.Items.Add(doc.ChildNodes[1].ChildNodes.NodeName);
Короче говоря не работает это дело Всякие access violation выскакивают. Наверно с инициализацией что-то не так. Но что?
И вообще если можно пример дайте.
Попробуй компонент Turbo XML классная штука :)
Код:
У меня на последней из приведенных строк выскакивает окошко с таким содержимым:
---------------------------
Debugger Fault Notification
---------------------------
Project C:\Program Files\Borland\Delphi7\Projects\XMLproga\MyXML.exe raised too many consecutive exceptions:
'access violation at 0x00000000: read of address 0x00000000'. Process Stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Что неправильно?
XML-файл:
Код:
<Provs_Lst>
<Prov id="1">
<name>Поставщик_1</name>
<Prov_Svcs>
<Svc id="1">
<Svc_Name>Вид_оплаты_1</Svc_Name>
<min_amount>1000</min_amount>
</Svc>
<Svc id="2">
<Svc_Name>Вид_оплаты_2</Svc_Name>
<min_amount>1000</min_amount>
</Svc>
</Prov_Svcs>
</Prov>
<Prov id="5">
.... аналогичное заполнение....
</Prov>
<Provs_Lst>
<Prov id="1">
<name>Поставщик_1</name>
<Prov_Svcs>
<Svc id="1">
<Svc_Name>Вид_оплаты_1</Svc_Name>
<min_amount>1000</min_amount>
</Svc>
<Svc id="2">
<Svc_Name>Вид_оплаты_2</Svc_Name>
<min_amount>1000</min_amount>
</Svc>
</Prov_Svcs>
</Prov>
<Prov id="5">
.... аналогичное заполнение....
</Prov>
<Provs_Lst>
Так понимаю, та злополучная строка должна ссылаться на блок <Prov id="1"> ... </Prov> ?
WinXP_sp2, Delphi 7