真的刚开始使用正则表达式而且只能做基本的事情。
我想将XML文件的元素标记中的连字符转换为下划线。我已经有一个c#应用程序,它使用查找和替换元素读取配置文件,并在RegEx中执行其他一些清理工作,但无法解决这个问题
所以目前它将作为
进入< convert-there-here>但不是这些< / convert-these-here>
我希望它吐出来
< convert_these_here>但不是这些< / convert_these_here>
C#脚本jut吸入文件并逐行读取,它不会将其视为xml文件
所以基本上我认为我只需要一个模式来寻找任何和所有连字符BETWEEN a<和>
由于
答案 0 :(得分:2)
抛弃正则表达式。解析XML并修复它。使用XDocument
类可以非常简单。
假设我们从以下XML文档开始:
<this-is>
<an-xml>
<doc but-I="remain-untouched">look-at-me</doc>
</an-xml>
</this-is>
我们可以将其加载到XDocument
并修复元素名称。
var str = "<this-is><an-xml><doc but-I=\"remain-untouched\">look-at-me</doc></an-xml></this-is>";
var xdoc = XDocument.Parse(str);
foreach(var el in xdoc.Descendants())
{
var name = el.Name.LocalName;
name = name.Replace("-", "_");
el.Name = el.Name.Namespace + name;
}
var fixedXmlString = xdoc.ToString();
现在这给了我们以下内容:
<this_is>
<an_xml>
<doc but-I="remain-untouched">look-at-me</doc>
</an_xml>
</this_is>