- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 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/
我是一名优秀的程序员,十分优秀!