<?xml version="1.0"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SN="300805" License="1" Version="2.2.1">
<Events>
<Event Name="SalesWareHouseOut" MainAction="WareHouseOut">
<DataField>
<Data Code="88157960000084632422" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />
<Data Code="88157960000061325274" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />
<Data Code="88157960000060866605" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />
<Data Code="88157960000091704302" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />
</DataField>
</Event>
</Events>
</Document>
想從以上中得到如下結果:
88157960000084632422
88157960000061325274
88157960000060866605
88157960000091704302
uj5u.com熱心網友回復:
Delphi讀取XML并不難,學習一下吧:http://peirenlei.iteye.com/blog/305030
uj5u.com熱心網友回復:
有個控制元件叫 NativeXMLuj5u.com熱心網友回復:
值得學習!uj5u.com熱心網友回復:
用internet頁面里面的XMLDocument控制元件,具體用法百度一下有很多例子的或者直接截取字串
uj5u.com熱心網友回復:
求例子或示范uj5u.com熱心網友回復:
我也很想知道。uj5u.com熱心網友回復:
const
s=
'<?xml version="1.0"?>'
+'<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001'
+'/XMLSchema" SN="300805" License="1" Version="2.2.1">'
+'<Events>'
+'<Event Name="SalesWareHouseOut" MainAction="WareHouseOut">'
+'<DataField>'
+'<Data Code="88157960000084632422" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />'
+'<Data Code="88157960000061325274" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />'
+'<Data Code="88157960000060866605" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />'
+'<Data Code="88157960000091704302" CorpOrderID="0319781" Actor="1" ActDate="2012-07-05 14:47:56" />'
+'</DataField>'
+'</Event>'
+'</Events>'
+'</Document>';
function GetXmldata(Source: string; sl: TStringlist):boolean;
const head='<Data Code="';
var i:integer;
begin
Result := false;
i:=pos(head,Source);
if i<1 then exit;
repeat
i:=i + length(head);
sl.Append(copy(Source,i,20));
delete(Source,1,i);
i:=pos(head,Source);
until i<1;
Result:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var sl:TStringlist;
begin
sl:=TStringlist.Create;
if GetXmldata(s,sl) then
showmessage(sl.Text);
sl.Free;
end;
uj5u.com熱心網友回復:
你太有才了。。。
uj5u.com熱心網友回復:
暈,樓主沒限制用什么手段,連4樓朋友也提及可以用截取的方法呀?代碼我也驗證過...uj5u.com熱心網友回復:
首先,多謝廣州仔!但你的方法只能解決當前檔案,如果檔案夾中有多個包含以上格式的檔案時,就不能滿足了,你試想下......我見有大牛能完滿解決的。uj5u.com熱心網友回復:
用NativeXML最簡單,網上有這個控制元件,是pas檔案,直接引入工程中就可以用了。操作也非常簡單。可以直接查找到Data Code這個節點,然后讀取內容。
var
XMLDoc: TNativeXML; //NativeXML類
RootNode: TXMLNode; //定義根節點
cNode:TXMLNode; //Data節點
begin
//實體化操作類
XMLDoc := TNativeXML.Create;
try
XMLDoc.LoadFromFile(XmlPath); //加載XML檔案(全路徑)
RootNode := XMLDoc.Root; //獲取XML的根節點
//從根節點開始查找Data節點
cNode := RootNode.FindNode('Data'); //此處可以查找多個RootNode.FindNodes('Data', TList);
if cNode <> nil then
ShowMessage(cNode.ReadAttributeString('Code'));
finally
XMLDoc.Free;
end;
end;
uj5u.com熱心網友回復:
11樓,冰河你思路是對的,但你實際測驗過?你上邊的代碼還不能完全解決問題?uj5u.com熱心網友回復:
通過節點Data Code
讀取資料。
uj5u.com熱心網友回復:
我那個代碼沒經過測驗,訪照我以前的程式寫的。只是提供一個思路,我那只是讀取一個節點uj5u.com熱心網友回復:
呵呵,方法很多,也可以當文本檔案一樣來讀寫。uj5u.com熱心網友回復:
XMLDocument,看一下萬一的博客uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
xmldocmentuj5u.com熱心網友回復:
你的方法很好,你能提供示例?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157108.html
標籤:VCL組件開發及應用
