c# - 如何将 <xml></xml> 等 xml 标签格式更改为 <xml/>

标签 c# asp.net replace

我有一个 xml 文件。根据我的要求,我需要更新空标签,例如我需要更改 <xml></xml> to <xml/> .是否可以像那样更改标签..

谢谢...

最佳答案

var xmlString="<xml></xml> <toto></toto>";
var properString=System.Text.RegularExpressions.Regex.Replace(xmlString, "<([^>]+)></[^>]+>", "<$1/>");

编辑:解释!

@Neil Knight 已经在评论中提供了 a link to Wikipedia解释正则表达式的概念。此处提供了特定于 .NET 的部分:.NET Framework Regular Expressions

起始 XML 标记可以与以下正则表达式匹配:<[^>]+> . [^>]+ part 可以理解为:所有不是“>”的字符,至少有一个字符(因此 <> 不匹配,但 <a> 匹配)。结束 XML 标记可以与相同类型的表达式匹配:</[^>]+> (注意第一个字符后的斜线)。所以正则表达式 <[^>]+></[^>]+>匹配空标签,例如 <foo></foo> (但要小心,它也匹配 <foo></bar>,这不是有效的 XML 代码)。

我们现在需要的是隔离“<”和“>”之间的字符。为此,我们使用括号:<([^>]+)> .这指示正则表达式引擎捕获匹配的字符。每组括号稍后可以在替换操作中由“$x”字符串引用(其中“x”是一个数字:“$1”表示第一个匹配的括号,“$2”表示第二个匹配的括号,等等)。

因此,通过调用 Regex.Replace(xmlString, "<([^>]+)></[^>]+>", "<$1/>") , <foo></foo>将被 <foo/> 取代(捕获“foo”字符,并用它们替换“$1”)。 <foo></bar>也将被替换为 <foo/> .

我希望这个解释对@Felix K 来说足够了。;o)
(我的英语不是很好,所以我没有提供很多细节)

关于c# - 如何将 <xml></xml> 等 xml 标签格式更改为 <xml/>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711216/

相关文章:

c# - 从C#中嵌入的浏览器控件获取HTML源代码

c# - Entity Framework 直接更新虚拟属性而不创建新记录

asp.net - 如果没有发表评论将显示在表单 View 中,您如何显示评论计数?

asp.net - 启用 NET 的开始标记需要 SHORTTAG YES

.net - 如何将 e.Result(由 WCF 服务返回)转换为列表 <>?

Python 正则表达式 : how to replace each match individually

c# - SqlParameters 列表中的有条件空值

c# - 如果共享同一父节点的另一个节点等于某个值,如何获取 XML 节点的值?

javascript - 获取正则表达式字符串的第二个匹配项

Javascript 用单个正斜杠替换反斜杠和正斜杠的组合