Ich habe diese XML:Delphi.Wie dieses XML zu analysieren?
<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>
Ich versuche, die VAT
Knoten eins nach dem anderen zu lesen ihre Percent
Werte zu extrahieren, aber es geht an den zweiten Knoten, ohne den ersten Knoten zu lesen. Hier ist mein Code, ich weiß nicht, wo das Problem ist:
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;
Ich denke diesen Code Knotenwert zu verwenden, aber ich weiß nicht, wie?
Es ist nicht, dass es * ... auf den zweiten Knoten geht ohne Lesen Sie den ersten VAT-Knoten. * Sie scheinen den Prozentwert von beiden Knoten demselben, nur einem, 'XReportInfo.PercTvaA' zuzuweisen. Setzen Sie einen Haltepunkt auf 'für i: = 0 auf aDoc.Root.NodeCount - 1 do' und gehen Sie dann mit ** F8 ** Zeile für Zeile durch den Code und sehen Sie, wie Sie den Wert vom ersten Knoten überschreiben Wert von der Sekunde. –