如何使用Delphi搜索和替换XML文件中的标记值?
我知道XML标签是什么,但是值是随机的,只需要重置为默认值,所以实际上我不能/不应该搜索值而只搜索标签。 我也知道文件/文件的位置。
我是Delphi的新手,有人可以给我一个简单的例子来说明如何做到这一点吗?
提前谢谢。
答案 0 :(得分:9)
我使用Delphi的IXMLDocument
加载XML文件并使用该文档替换该元素。像这样:
uses
XMLDoc,
XMLIntf;
procedure ChangeTag(const filename : String);
var
doc : IXMLDocument;
parent : IXMLNode;
toReplace : IXMLNode;
replacement : IXMLNode;
begin
doc := LoadXMLDocument(filename);
parent := doc.DocumentElement.ChildNodes.FindNode('parent');
toReplace := parent.ChildNodes.FindNode('toReplace');
replacement := doc.CreateElement('replacement', '');
replacement.Text := toReplace.Text;
parent.ChildNodes.ReplaceNode(toReplace, replacement);
doc.SaveToFile(filename);
end;
答案 1 :(得分:6)
最好的可能性是使用 XML解析器,例如:
如果它是一个相当小的XML文件,您也可以将XML加载到字符串(列表)中并使用正则表达式:
var
Regex: TPerlRegEx;
Regex := TPerlRegEx.Create(nil);
Regex.RegEx := '<yourtag>.*?</yourtag>';
Result := objRegEx.Replace(inputString, replacementString, true);
您可以获取TPerlRegex组件here。
第三种方式包括使用pos,delete和insert完成所有脏工作手动。你必须找到开头和结尾标签的两个位置和&gt;的位置。对于openeing标记),删除这两个索引之间的字符串,然后插入默认值(如果有多个匹配项,则必须迭代所有匹配项)。不是我喜欢的方式; - )