我使用Delphi加载XML文件IXMLDocument
并使用该文档替换元素.像这样的东西:
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;
Run Code Online (Sandbox Code Playgroud)
最好的可能是使用XML解析器,例如:
如果它是一个相当小的XML文件,您也可以只将XML加载到字符串(列表)中并使用正则表达式:
var
Regex: TPerlRegEx;
Regex := TPerlRegEx.Create(nil);
Regex.RegEx := '<yourtag>.*?</yourtag>';
Result := objRegEx.Replace(inputString, replacementString, true);
Run Code Online (Sandbox Code Playgroud)
您可以在此处获取TPerlRegex组件.
第三种方式包括手工完成所有脏工作,使用pos,delete和insert.你必须找到开始和结束标记的两个pos'es和开放标记的>的pos,删除这两个索引之间的字符串,然后插入你的默认值(你必须迭代如果有多个匹配则匹配所有匹配项).不是我喜欢的方式;-)