如何使用Delphi在XML文件中搜索和替換標記值?如何使用delphi在xml文件中搜索和替換標籤值?
我知道XML標籤是什麼,但該值是隨機的,只需要重置爲默認值,所以實際上我不能/不應該搜索值,但只能搜索標籤。 我也知道文件/文件的位置。
我是德爾福的新手,有人可以提供一個簡單的例子來說明如何做到這一點嗎?
預先感謝您。
如何使用Delphi在XML文件中搜索和替換標記值?如何使用delphi在xml文件中搜索和替換標籤值?
我知道XML標籤是什麼,但該值是隨機的,只需要重置爲默認值,所以實際上我不能/不應該搜索值,但只能搜索標籤。 我也知道文件/文件的位置。
我是德爾福的新手,有人可以提供一個簡單的例子來說明如何做到這一點嗎?
預先感謝您。
最好的可能性是使用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。你必須找到開始和結束標記的兩個pos's和開始標記的> pos),刪除這兩個索引之間的字符串,然後插入默認值(並且必須迭代如果有多個事件發生,則全部匹配)。不是我喜歡的方式;-)
我會使用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;
正則表達式通常有缺點,他們不拿基礎文本格式的picularities考慮(比如,看財富「驗證的電子郵件地址,使用正則表達式」 )。所以,我建議你先把XML Parser的可能性放在你的答案中。 – 2010-01-19 11:04:50
我同意......完成。 – Leo 2010-01-19 11:50:44
+1;感謝您的編輯。 – 2010-01-19 17:00:47