Parsi Coders
XML در دلفی - نسخه قابل چاپ

+- Parsi Coders (http://parsicoders.com)
+-- انجمن: Software Development Programming (http://parsicoders.com/forumdisplay.php?fid=37)
+--- انجمن: Pascal/Delphi (http://parsicoders.com/forumdisplay.php?fid=45)
+--- موضوع: XML در دلفی (/showthread.php?tid=849)

صفحات 1 2


XML در دلفی - nasrinPoornejaty - 09-03-2011

سلام
چطور می توان در دلفی از فایل XML که معرف یک جدول است استفاده کرد؟؟؟
چطور می توان این فایل را به DBgrid و صل کرد ؟؟
چطور می توان روی این فایل گزارش گرفت و Query زد؟؟؟

لطفاً اگر کسی اطلاعاتی در این مورد داره کمک کنه
با تشکر


RE: XML در دلفی - Amin_Mansouri - 09-03-2011

سلام
یعنی منظور شما این هست از جدول xml گذارش گرفت؟
چطور می توان این فایل را به DBgrid و صل کرد ؟؟
منظورتون به وصل کردن xml به dbgird بصورت مستقیم هست ؟


RE: XML در دلفی - Amin_Mansouri - 09-03-2011

Export كردن اطلاعات به XML
انجام دادن اين كار از طريق ADO به راحتي استفاده از متد SaveToFile است.

به كد زير نگاهي بياندازيد:
کد:
ADOTable1.SaveToFile('C:\test.xml', pfXML);
همچنين با استفاده از كد زير مي توانيد فايل XML مربوطه را Load كنيد:
کد:
ADOTable1.LoadFromFile('C:\test.xml');')
البته به جاي pfXML مي توانيد از pfADTG مي توانيد استفاده كنيد كه در اين صورت اطلاعات در يك فايل به صورت Binary نوشته مي شود كه به موضوع مبحث ما ربطي ندارد.

Export كردن يك Table به XML با استفاده از ClientDataSet

براي انجام اين عمل با استفاده از ClientDataSet از مراحل زير استفاده كنيد:

1- يك كمپوننت TDataSetProvider (اين كمپوننت در تب DataAccess قرار دارد) بر روي فرم خود بگذاريد و با استفاده از پراپرتي DataSet آن را به Table يا Query و يا به طور كلي به Dataset مورد نياز خود متصل كنيد.

2- يك كمپوننت TClientDataSet (اين كمپوننت هم در تب DataAccess قرار دارد) بر روي فرم خود بگذاريد و مقدار ProviderName آن را برابر نام كمپوننت TDataSetProviderي قرار دهيد كه در مرحله 2 ساختيد.

3- به سادگي از متد زير استفاده كنيد:

کد:
ClientDataSet1.Active := True;

;(   ClientDataSet1.SaveToFile('C:\1.XML', dfXML)
پارامتر دوم متد SaveToFile مي توانيد شامل مقادير زير باشد: dfBinary, dfXML, dfXMLUTF8.

بررسي راجع به dfBinary به مبحث مقاله ما مربوط نمي شود.

حتما متوجه شده ايد كه تفاوت dfXML و dfXMLUTF8 چيست؟ dfXMLUTF8 براي Export اطلاعات به XML با فرمت Unicode استفاده مي شود. البته راههاي ديگري هم وجود دارد كه در نسخه هاي قديمي تر دلفي به كار مي آيند. اين مقاله از آقاي محمد باقر معموري به آدرس http://www.irandevelopers.com/ است




RE: XML در دلفی - nasrinPoornejaty - 09-03-2011

(09-03-2011، 10:20 AM)پارسا نوشته: سلام
یعنی منظور شما این هست از جدول xml گذارش گرفت؟
چطور می توان این فایل را به DBgrid و صل کرد ؟؟
منظورتون به وصل کردن xml به dbgird بصورت مستقیم هست ؟

بله از جدولی که در فایل XML هست گزارش گرفت و Query زد .یا بصورت مستقیم یا غیر مستقیم .ما یک فایل XML داریم که اطلاعات یک جدول از دیتابیس خود را در این فایل بصورت زیر ریختیم
-
<TST.PACKAGE_DEP2>
- <Records>
<ID>1</ID>
<PACKAGE_NAME>BCKPACK2.AAA</PACKAGE_NAME>
<DSN>SRVC</DSN>
<INDEX_NAME>COMMON.CUSTOMER_ACCOUNT__IDX</INDEX_NAME>
<INDEX_COLUMN>CUSTOMER_ACCOUNT_ID,</INDEX_COLUMN>
<INSERT_DATE>08/16/2011 10:43:01</INSERT_DATE>
<TBNAME>CUSTOMER_ACCOUNT</TBNAME>
<TBCREATOR>COMMON</TBCREATOR>
</Records>
..........
حالا باید بتونم در این جدول (xml) چهار عمل select ، Update, Delete و Insert را انجام بدم.
من تمام این خطوطی را که شما زحمت کشیدید در اینترنت دیدم ، اما جواب سوال من نیست ، من فایل رو ایجاد کردم. مشکل در خواند این فایل ایجاد شده است.



RE: XML در دلفی - Amin_Mansouri - 09-03-2011

باید دلفی نصب کنم
نصب کردم پیوست میکنم
حتما برنامه باید با دلفی باشه؟


RE: XML در دلفی - nasrinPoornejaty - 09-03-2011

بله حتماً باید دلفی7 باشه.


RE: XML در دلفی - Amin_Mansouri - 09-03-2011

من تو دلفی 2010 مینیویسم
اینم یه sample
کد:
var
    sl : TStringList;
    xmlDoc : TXMLDocument;
    iNode : IXMLNode;
begin
    xmlDoc := TXMLDocument.Create(nil) ;
    try
      xmlDoc.Active := true;

      iNode := xmlDoc.AddChild('leaf') ;
      iNode.Attributes['attrib1'] := 'value1';
      iNode.Text := 'Node Text';

      sl := TStringList.Create;
      try
        sl.Assign(xmlDoc.XML) ;

        sl.Insert(0,'<!DOCTYPE ns:mys SYSTEM "myXML.dtd">') ;
        sl.Insert(0,'<?xml version="1.0"?>') ;

        sl.SaveToFile('c:\Test.xml') ;
      finally
        sl.Free;
      end;

    finally
      xmlDoc := nil;
    end;
end;
  And here's the resulting XML:  <?xml version="1.0"?>
<!DOCTYPE ns:mys SYSTEM "myXML.dtd">
<leaf attrib1="value1">Node Text</leaf>



RE: XML در دلفی - Amin_Mansouri - 09-03-2011

در سورس بالا از کامپونت TXMLDocument استفاده شده
insert add & save file در داخلش استفاده شده


RE: XML در دلفی - nasrinPoornejaty - 09-03-2011

مشکلی نداره شما با دلفی 10 لطف ککنید بنویسید ، من از IXMLDOMDocument
استفاده کردم . کد من از Table می خونه و در یک فایل XML ذخیره می کنه . این کار رو انجام دادم. که در زیر آوردم :
function TForm1.makeXml(table: TTable): Integer;
var
i : Integer;
xml,temp : String;
begin
try
table.close;
table.open;
xml := table.TableName;
doc := CreateOleObject('Microsoft.XMLDOM')
as IXMLDomDocument;
root := doc.createElement(xml);
doc.appendchild(root);
while not table.eof do begin
child:= doc.createElement('Records');
root.appendchild(child);
for i:=0 to table.FieldCount-1 do begin
child1 := doc.createElement(table.Fields[i].FieldName);
child.appendchild(child1);
child1.appendChild(doc.createTextNode(temp));
end;
table.Next;
end;
doc.save(xml+'.xml');
memo1.lines.Append(doc.xml);
Result:=1;
except
on e:Exception do
Result:=-1;
end;

حالا می خوام بر اساس یک شرایط مثلا اگر ایندکس XX بود اطلاعات آن نود را در DBgrid نمایش بده .


RE: XML در دلفی - Amin_Mansouri - 09-03-2011

در ضمن سورس بالا که گفتید پیدا کردید لینکشو درج کرده بودم زیرش .
شما باید xml رو کاملا فراخوانی کنید.
پیشنهاد میکنم لینک زیر رو کاملا مطالعه فرامیید.
بهترین sample برای دلفی xml هست.
ادرس لینک :
http://delphi.about.com/od/windowsshellapi/a/xml_delphi.htm
موفق باشید