簡體   English   中英

如何在Delphi中讀取XML文件?

[英]How to read XML file in Delphi?

這是我想做的事情。 我的程序與此配合良好:

XMLText =  '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
'<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
  '<title>Harry Potter</title>' +
  '<author>J. K. Rowling.</author>' +
  '<length>400</length>' +
'</book>';


procedure TForm1.Button1Click(Sender: TObject);
var
XMLDoc: IXMLDOMDocument;
Node, SibNode: IXMLDOMNode;
begin
  Memo1.Clear;
  XMLDoc := CoDOMDocument.Create;
  XMLDoc.loadXML(XMLText);
end;

現在,我想從項目所在的同一文件夾中導入包含6000本書(books.xml)的XML文件,而不是const XMLText。 我怎樣才能做到這一點?

謝謝! :)

選項1:直接從磁盤加載

IXMLDomDocument具有一個接受文件名的load方法。 您可以使用該方法代替當前使用的loadXML

選項2:首先將文件加載到字符串中

或者,您可以先將文件加載到字符串中。 在這種情況下,我幾乎找不到任何理由,但知道這一點永遠不會有任何傷害。 :)

看一下TStringStream ,它具有一個LoadFromFile方法,可以從磁盤加載文件。 您可以使用它將整個books.xml加載到內存中。 加載后,您可以在stringstreams的傳遞DataString屬性的loadXML方法。 此屬性以字符串形式返回流(包含XML)的全部內容。

為此,請使用Delphi XML數據綁定向導

它將在您的XML文件(或者如果您有描述XML的XSD文件)周圍生成帶有Delphi包裝對象的單元。

這些包裝器基於與您現在使用的IXMLDOMDocument非常相似的IXMLDocument ,並在其周圍添加一個層,該層使您可以在Delphi編譯器的更多支持下訪問數據,通常在XML內部處理數據的過程比使用普通的IXMLDocumentIXMLDOMDocument容易得多。

該單元包含從文件或字符串加載XML的方法。

有一個很好的教程和一個有關使用此向導的很好的視頻

只要改變loadXMLload('YourFileName.xml')

procedure TForm1.Button1Click(Sender: TObject);
var
  XMLDoc: IXMLDOMDocument;
begin
  XMLDoc := CoDOMDocument.Create;
  XMLDoc.load('MyBooks.xml');
  Memo1.Lines.Text := XMLDoc.xml;
end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM