6 SysUtils, Classes, {SAX, SAXHelpers, SAXComps, SAXKW,}
7 GikoSystem, {XMLIntf, XMLDoc}{, HttpApp} GikoXMLDoc, YofUtils;
10 TAddressHistoryDM = class(TDataModule)
15 // procedure SAXStartDocument(Sender: TObject);
16 // procedure SAXEndDocument(Sender: TObject);
17 // procedure SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; const Atts: IAttributes);
18 // procedure SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString);
19 // procedure SAXCharacters(Sender: TObject; const PCh: SAXString);
22 procedure ReadHistory(sl: TStrings; ReadCount: Integer);
23 procedure WriteHistory(sl: TStrings; WriteCount: Integer);
27 AddressHistoryDM: TAddressHistoryDM;
32 ADDRESS_HISTORY_FILE_NAME = 'AddressHistory.xml';
36 procedure TAddressHistoryDM.ReadHistory(sl: TStrings; ReadCount: Integer);
41 HistoryNode: IXMLNode;
47 FReadCount := ReadCount;
49 FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
51 if FileExists(FileName) then begin
53 XMLDoc := IXMLDocument.Create;
54 //XMLDoc := LoadXMLDocument(FileName);
55 LoadXMLDocument(FileName, XMLDoc);
57 XMLNode := XMLDoc.DocumentElement;
59 if XMLNode.NodeName = 'address' then begin
60 for i := 0 to XMLNode.ChildNodes.Count - 1 do begin
61 HistoryNode := XMLNode.ChildNodes[i];
62 if HistoryNode.NodeName = 'history' then begin
63 if FReadCount >= sl.Count then begin
64 s := Trim(HistoryNode.Attributes['url']);
67 //sl.Add(HttpDecode(s));
79 // AddressSAXHandler.OnStartDocument := SAXStartDocument;
80 // AddressSAXHandler.OnEndDocument := SAXEndDocument;
81 // AddressSAXHandler.OnStartElement := SAXStartElement;
82 // AddressSAXHandler.OnStartElement := SAXStartElement;
83 // AddressSAXHandler.OnEndElement := SAXEndElement;
84 // AddressSAXHandler.OnCharacters := SAXCharacters;
86 // AddressSAXReader.Vendor := 'Keith Wood';
87 // AddressSAXReader.URL := FileName;
88 // AddressSAXReader.Parse;
91 procedure TAddressHistoryDM.WriteHistory(sl: TStrings; WriteCount: Integer);
94 SaveList: TStringList;
100 HistoryNode: IXMLNode;
104 XMLDoc := NewXMLDocument;
105 XMLDoc.Encoding := 'Shift_JIS';
106 XMLDoc.StandAlone := 'yes';
107 XMLNode := XMLDoc.AddChild('address');
109 FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
110 if sl.Count > WriteCount then
115 for i := 0 to Count - 1 do begin
116 HistoryNode := XMLNode.AddChild('history');
117 HistoryNode.Attributes['url'] := Trim(sl[i]);
119 XMLDoc.SaveToFile(FileName);
121 FileName := GikoSys.GetConfigDir + ADDRESS_HISTORY_FILE_NAME;
122 SaveList := TStringList.Create;
124 if sl.Count > WriteCount then
128 SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
129 SaveList.Add('<address>');
130 for i := 0 to Count - 1 do begin
131 SaveList.Add('<history url="' + HtmlEncode(Trim(sl[i])) + '"/>');
133 SaveList.Add('</address>');
134 SaveList.SaveToFile(FileName);
140 {procedure TAddressHistoryDM.SAXStartDocument(Sender: TObject);
145 procedure TAddressHistoryDM.SAXEndDocument(Sender: TObject);
150 procedure TAddressHistoryDM.SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString;
151 const Atts: IAttributes);
155 if QName = 'history' then begin
156 if FReadCount >= FList.Count then begin
157 s := Atts.getValue('url');
158 if Trim(s) <> '' then
164 procedure TAddressHistoryDM.SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString);
169 procedure TAddressHistoryDM.SAXCharacters(Sender: TObject; const PCh: SAXString);