【发布时间】:2014-05-06 01:31:09
【问题描述】:
我想捕获 XML 字符串的一部分并将捕获的值替换为新值。
我有以下代码:
Regex regex = new Regex("<ns1:AcctId>(?<AcctId>.*?)</ns1:AcctId>");
Match match = regex.Match(Xml);
string AcctId = match.Groups["AcctId"].Value;
string IBANizedAcctId = IBANHelper.ConvertBBANToIBAN(AcctId);
newXml = Regex.Replace(oldXml, regex, IBANizedAcctId); //DOES NOT WORK!
所以我想在ns1:AcctId XML 元素中捕获 AcctId。然后我想通过将 BBAN 转换为 IBAN 并替换值来用新值替换这个值。第一部分有效,但我不知道如何完成最后一部分(我确实找到了一个想法here,但我不明白)。
希望有人能帮帮我!
【问题讨论】:
-
好的...由于某种原因它不允许我发布我的答案... :(
-
这是我对现有代码所做的 2 处更改: Match match = regex.Match(oldXml); -and- string newXml = oldXml.Replace(AcctId, IBANizedAcctId);
-
也无法回答:但感谢this,我找到了这个解决方案 回答:我知道最后一部分应该是:
Xml = Regex.Replace(Xml, regexString, string.Format("$1{0}$3", IBANizedAcctId));其中 regexString 具有三个捕获组:string regexDestAcctIntString = "(<ns1:AcctId>)(?<AcctId>.*?)(</ns1:AcctId>)";@ 987654327@ 和$3分别指第一个和第三个捕获组,并将中间替换为新值。 80% 确定它有效。 -
@MaxOvrdrv 这更合乎逻辑。 :)
-
试一试...我的也可以 100% 工作,并且可以跨越整个 Xml 字符串。不仅仅是比赛。由你决定;)