在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原来自己是个一个菜鸟。 Delphi操作XMl,只要使用 NativeXml。我是用的版本是4.02。NativeXML的使用方法比较简单,但是功能很强大。 XE2的话,要在simdesign.inc后面加上: // Delphi XE2 / 16 一、使用 1) Copy the NativeXml files from the NativeXml directory into your project folder. Copy additional 2) Include the clause "uses NativeXml" in your unit. If you want to use NativeXml in all your projects, you can also add the NativeXml folder to your library path. 最简单的方法是将General 下的 文件和 nativexml 下的 文件复制到一个目录下,然后加入到 library路径,这样以后用到就不用拷来拷去了。 在(实现)部分 uses NativeXml; //必须的。 以下代码选自万一的博客 : uses NativeXml; //! 1、 XML:=TNativeXML.Create();//aowner可以为nil,可以是Self(这样可以随着宿主的释放而释放) 2、xml := TNativeXml.CreateEx(False, //是否建立 Declaration 对象, 如:VersionString//显示 XML 版本;EncodingString //显示 XML 编码 3、{使用 CreateName 建立可直接指定根节点的名称} xml:=TNativeXml.CreateName('MyRoot'); 4、创那个键之后可以{使用 New 方法清空并重新构建} 5、{使用 ReadFromString 从文本读入} 三、保存XML文件 1、xml.ExternalEncoding := seUTF8; //指定编码,默认为 UTF8 四、XML节点{定义根节点 root:TSdElement} TsdElement = class(TsdContainerNode) 六、事件(摘自 万一) unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, NativeXml{!}; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private procedure XmlEvent(Sender: TObject; ANode: TXmlNode); //TsdXmlNodeEvent 事件 public end; var Form1: TForm1; implementation {$R *.dfm} const xmlFile = 'C:\Temp\xml_test_files\CDATA_section.xml'; //测试文件 {测试 OnNodeNew 事件:开始载入节点时发生} procedure TForm1.Button1Click(Sender: TObject); var xml: TNativeXml; begin Memo1.Clear; xml := TNativeXml.Create(nil); xml.OnNodeNew := XmlEvent; xml.LoadFromFile(xmlFile); xml.Free; end; {测试 OnNodeLoaded 事件:节点载入完成时发生} procedure TForm1.Button2Click(Sender: TObject); var xml: TNativeXml; begin Memo1.Clear; xml := TNativeXml.Create(nil); xml.OnNodeLoaded := XmlEvent; xml.LoadFromFile(xmlFile); xml.Free; end; {将被调用的事件, OnNodeNew 和 OnNodeLoaded 事件的参数格式是一样的} procedure TForm1.XmlEvent(Sender: TObject; ANode: TXmlNode); var depth: string; begin if ANode.ElementType = xeElement then //xeElement 是 TsdElementType 枚举的类型之一 begin depth := StringOfChar(#9, ANode.TreeDepth); //TreeDepth 是节点深度 Memo1.Lines.Add(depth + ANode.Name); end; end; end. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论