我需要能够解析包含XML的字符串并通过修改标记来“修复”它。例如,我需要用fontSize="16"
fontSize="16px".
在c#和.NET中执行此操作的有效(但可读)方式是什么?我已经在while循环中开始使用IndexOf
的路线,但认为必须有更好的方法来做到这一点。
答案 0 :(得分:7)
尝试Regex.Replace()
:
Regex.Replace(inputText, @"fontSize=""(\d+)""", @"fontSize=""$1px""")
第二个参数查找fontsize="..."
的所有示例,其中...
仅表示数字。由于存在以下"
,因此它与16px
形式中已有的内容不匹配。第三个参数告诉它用什么替换匹配 - 在这种情况下,在数字(px
)之后添加了额外$1
的相同字符串。
答案 1 :(得分:3)
如果您正在使用XML,我会使用正确的工具来完成工作:XDocument
。这是一个例子:
var input = @"
<root>
<someTag fontSize=""16"" />
<someTag otherAttribute=""12"" />
</root>";
var doc = XDocument.Parse(input);
var allAttributes = doc.Descendants().Attributes();
var fontSizeAttributes = allAttributes.Where(x => x.Name == "fontSize");
foreach (var f in fontSizeAttributes)
f.Value = Regex.Replace(f.Value, "^([0-9].)$", "$1px");
doc
中的结果包含:
<root>
<someTag fontSize="16px" />
<someTag otherAttribute="12" />
</root>