我有这样的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 **逐行逐行执行代码,看看如何覆盖第一个节点的值,从第二个价值。 –