私はこのXMLを持っている:この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>
私は彼らのPercent
値を抽出するために1でVAT
ノード1を読みしようとしていますが、それは最初のノードを読まずに2番目のノードになります。ここに私のコードは、問題がどこにあるか私にはわからない、次のとおりです。
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;
私はこのCODEノード値を使用することを考えていますが、私は方法がわかりませんか?
それはそれは* ...せずに2番目のノードに行くこと、ではありません最初のVATノードを読み込みます*両方のノードからのパーセンテージ値を同じ、唯一の 'XReportInfo.PercTvaA'に割り当てているようです。 'for i:= 0にaDoc.Root.NodeCount - 1 do'にブレークポイントを置き、** F8 **でコードを1行ずつ進めて、最初のノードからどのように値を上書きしているかを見てください。 2番目の値からの値。 –