我有這樣的XML:Delphi.How解析這個xml?
<NET_TAX_DATABASE DeviceSerialNo="ATH16000038" CreationDate="15/11/2016 13:21">
<VAT>
<Code>02</Code>
<Letter>B</Letter>
<Percent>8%</Percent
<RcptVATAmount>31,11</RcptVATAmount>
</VAT>
<VAT>
<Code>03</Code>
<Descr>CATEG. TVA B</Descr>
<Letter>C</Letter>
<Percent>11%</Percent>
<RcptVATAmount>312,11</RcptVATAmount>
</VAT>
</NET_TAX_DATABASE>
我想一個一個地讀VAT
節點,並提取其Percent
值,但它關係到第二個節點不讀的第一個節點。這裏是我的代碼,我不知道問題出在哪裏:
var
i,j : Integer;
aDoc : TNativeXml;
aNode : TXmlNode;
begin
try
aDoc := TNativeXml.Create(nil);
aDoc.LoadFromStream(content);
aDoc.XmlFormat := xfReadable;
if Assigned(aDoc.Root) then
begin
for i := 0 to aDoc.Root.NodeCount - 1 do
begin
if (AnsiUpperCase(aDoc.Root.Nodes[i].Name) = AnsiUpperCase('vat')) then
begin
aNode := aDoc.Root.Nodes[i];
for j := 0 to aDoc.Root.NodeCount - 1 do
begin
if (aNode[j].Name = 'Percent') then
begin
str := aNode[j].ValueUnicode;
str := stringReplace(str, '%','',[rfReplaceAll]);
XReportInfo.PercTvaA := StrToInt(trim(str));
end;
end;
end;
end;
end;
finally
aDoc.Free;
end;
end;
我想使用此代碼節點值,但我不知道怎麼樣?
它不是,它* ...進入第二個節點,而閱讀第一個增值稅節點*您似乎將來自兩個節點的百分比值分配給同一個唯一的「XReportInfo.PercTvaA」。將一個斷點放在'for i:= 0 to aDoc.Root.NodeCount - 1 do'上,然後用** F8 **逐行逐行執行代碼,看看如何覆蓋第一個節點的值,從第二個價值。 –