我有一个XML文件。根据我的要求,我需要更新空标签,例如我需要更改<xml></xml> to <xml/>
。是否有可能改变标签一样的..如何改变XML标签格式就像<xml></xml>到<xml/>
谢谢...
我有一个XML文件。根据我的要求,我需要更新空标签,例如我需要更改<xml></xml> to <xml/>
。是否有可能改变标签一样的..如何改变XML标签格式就像<xml></xml>到<xml/>
谢谢...
var xmlString="<xml></xml> <toto></toto>";
var properString=System.Text.RegularExpressions.Regex.Replace(xmlString, "<([^>]+)></[^>]+>", "<$1/>");
编辑:解释!
@Neil骑士已经提供了,在评论,a link to Wikipedia解释的正则表达式的概念。 .NET特定部分可在此处获得:.NET Framework Regular Expressions
起始XML标记可以与以下正则表达式匹配:<[^>]+>
。 [^>]+
部分可以理解为:所有不是“>”的字符,至少包含一个字符(因此<>
不匹配,但是<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)
(我的英文不太好,这就是为什么我没有提供很多细节)
一些链接编辑的空标签REG-EX的解释和一个简短的说明,我给你一个+1。 – 2012-01-03 11:18:37
if (someElement.innerText == string.Empty)
{
someElement.innerText = null;
}
这需要一个XmlDocument的权利?请多留一点时间回答。 – 2012-01-03 11:20:33
在手机触摸屏上输入以上内容对我来说已经够用了。 :-P – KristoferA 2012-01-03 11:22:34
我想知道什么提供了最佳的性能:正则表达式还是完整遍历XmlDocument?在代码简洁性方面,正则表达式更好:只有一行代码来处理整个文档。 – CedX 2012-01-04 00:05:24
这取决于你是如何创造您的xml文件放在第一位......代码片段将会很有用 – 2012-01-03 10:59:15
我已经创建了xml文件。我需要从 到 –
Kathirvel
2012-01-03 11:05:33