替换节点名称中的空白(修复损坏的xml)
本文关键字:损坏 xml 空白 节点 替换 | 更新日期: 2023-09-27 18:25:21
我有这样一个损坏的XML:
<root>
<Abc Dfg Xyz>data data data</Abc Dfg Xyz>
<Kmn fsd>data data</Kmn fsd>
<Aa bb/>
</root>
如何在节点名称中用下划线替换空白以修复xml格式,但使用Regex.replace将其保留在数据中?
我需要这样一份文件:
<root>
<Abc_Dfg_Xyz>data data data</Abc_Dfg_Xyz>
<Kmn_fsd>data data</Kmn_fsd>
<Aa_bb/>
</root>
提前谢谢。
除非您了解数据,否则使用正则表达式解析XML不是一个好主意。我认为,在某些有限的情况下,这可能会非常有帮助@HighCore,看看这个问题的答案。
我们并不是想了解世界上所有可能的投入—我们正在尝试制作一些在特定情况下有效的东西。因此,如果您知道您的输入在数据中没有<
或>
,只有在节点名称中,则可以使用regex。
在C#中,使用类似这样的MatchEvaluator
:
class MyReplacer {
public string ReplaceSpaces(Match m)
{
return m.Value.Replace(" ", "_");
}
void replacingMethod() {
...
Regex re = new Regex("<.*>");
MyReplacer r = new MyReplacer();
// Assign the replace method to the MatchEvaluator delegate.
MatchEvaluator myEvaluator = new MatchEvaluator(r.ReplaceSpaces);
// Replace matched characters using the delegate method.
sInput = re.Replace(sInput, myEvaluator);
}