根据您提供的信息,TNativeXml 库中确实没有 NodeFindChild 方法。但是,可以使用 TXmlNodeList 类型的 FindNodes 方法来查找符合条件的节点。
以下是修改后的代码示例:
function MyFunction(const FileName, ID: string): string;
var
XMLDoc: TNativeXml;
Node, SubNode1, SubNode2, SubNode3: TXmlNode;
NodeList: TXmlNodeList;
i: Integer;
begin
Result := '';
XMLDoc := TNativeXml.Create(nil);
try
XMLDoc.LoadFromFile(FileName);
NodeList := XMLDoc.Root.NodeByName('node').FindNodes('subnode1[@id="' + ID + '"]');
for i := 0 to NodeList.Count - 1 do
begin
Node := NodeList[i].Parent;
SubNode2 := Node.NodeByName('subnode2');
if Assigned(SubNode2) then
begin
SubNode3 := SubNode2.NodeByName('subnode3');
if Assigned(SubNode3) then
Result := SubNode3.AttributeByName['attribute']; //返回subnode3 attribute的值
end;
end;
finally
XMLDoc.Free;
end;
end;
在上面的代码中,我使用了 FindNodes
方法来查找具有特定 id
属性值的 subnode1
节点,并将结果存储在 TXmlNodeList
对象中。然后,在循环中遍历列表并查找相应的子节点。
希望这个修改能够解决您遇到的问题!