PDA

View Full Version : کدنویسی خروجی از xmldocument1



khanboloky
جمعه 04 شهریور 1390, 01:42 صبح
گره هاي زير رابه xmldocument1 دادهام

<?xml version="1.0" encoding="UTF-8"?>
<drug_prescriptions version="1">
<drug_prescription>
<id>1260</id>
<date>13900601</date>
<time>'03:35:34'</time>
<center>6221</center>
<nezam_id>'11'</nezam_id>
<specialty>305</specialty>
<price_sum>72600</price_sum>
<drug>
< >1000</generic>
<group>1</group>
<count>2</count>
<patient_share>0</patient_share>
<NIOC_share>400</NIOC_share>
</drug>
<drug>
<generic>6441</generic>
<group>1</group>
<count>3</count>
<patient_share>0</patient_share>
<NIOC_share>45000</NIOC_share>
</drug>
<drug>
<generic>1004</generic>
<group>1</group>
<count>4</count>
<patient_share>0</patient_share>
<NIOC_share>19200</NIOC_share>
</drug>
</drug_prescription>


</drug_prescriptions>

حال با کد نويسي زيرمي توانم مقدار id را بخوانم

edit1.text:=XMLDocument1.DocumentElement.ChildNode s[i].ChildNodes['id'].NodeValue

مشکلم اينجاست با کدنويسي بالا نمي توانم مقدارgenericرا که بين گره drugاست راداخل edit1.text بريزم
خواهشمندم کدنويسي صحيح راراهنمايي فرماييد باتشکر

vcldeveloper
جمعه 04 شهریور 1390, 03:59 صبح
کد XML بالا در خط 12 مشکل داره، و نود <generic> به صورت <> درج شده. در صورتی که اون نقص رو برطرف کنید، باید بتونید به مقدار اون نود دسترسی داشته باشید. البته کدی که در بالا نوشتید، مقدار نود id زیر مجموعه نود drug_prescription را میخوانه، برای خواندن نود generic فقط تغییر نام مقدار id کافی نیست، بلکه باید ابتدا به نود drug دسترسی پیدا کنید، و سپس مقدار نود generic زیرمجموعه آن را بخوانید. شکل کلی کد شما میشه چیزی مثل این:

var
PrescriptionNode,
DrugNode,
GenericNode : IXMLNode;
GenericValue : string;
i, j : Integer;
begin
for i := 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do
begin
if CompareStr('drug_prescription',XMLDocument1.Docume ntElement.ChildNodes[i].NodeName) = 0 then
begin
PrescriptionNode := XMLDocument1.DocumentElement.ChildNodes[i];
for j := 0 to PrescriptionNode.ChildNodes.Count - 1 do
begin
if CompareStr('drug',PrescriptionNode.ChildNodes[j].NodeName) = 0 then
begin
DrugNode := PrescriptionNode.ChildNodes[j];
GenericNode := DrugNode.ChildNodes.FindNode('generic');
if Assigned(GenericNode) then
GenericValue := GenericNode.Text;
end;
end;
end;
end;
end;