这是我的xml(或者说svg):
<svg xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="0.48.2 r9819"
sodipodi:docname="android.svg" viewbox="0 0 32 54">
[Some nodes below]
</svg>
从这一点开始,我想删除名称中包含inkscape
或sodipodi
的所有属性(在这种情况下,应保留的属性为viewbox
。
希望你能帮助我。谢谢!
答案 0 :(得分:2)
这是可能的方式:
var raw = @"<svg xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'
xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'
inkscape:version='0.48.2 r9819'
sodipodi:docname='android.svg' viewbox='0 0 32 54'>
[Some nodes below]
</svg>";
var svg = XElement.Parse(raw);
var keywords = new[] { "inkscape", "sodipodi" };
svg.Attributes()
.Where(o => keywords.Any(k => o.Name.ToString().Contains(k)))
.Remove();
Console.WriteLine(svg.ToString());
<强> dotnetfiddle demo
强>
输出
<svg viewbox="0 0 32 54">
[Some nodes below]
</svg>