【问题标题】:Removing Multiple Attributes in XML using XElement使用 XElement 删除 XML 中的多个属性
【发布时间】:2016-08-07 01:28:34
【问题描述】:

这是我的 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>

从此,我想删除名称包含inkscapesodipodi 的所有属性(在这种情况下,应该保留的属性是viewbox

希望你能在这方面帮助我。谢谢!

【问题讨论】:

    标签: c# xml vb.net svg linq-to-xml


    【解决方案1】:

    这是一种可能的方式:

    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>
    

    【讨论】:

    • 有什么方法可以在 VB 或 C# 中执行此操作,因为我打算动态执行此操作。
    • 所以 C# 是一种选择,对吧?上面已经在 C# 中完成了,有什么问题?我不明白你这里的 dynamic 是什么意思..
    • 哦!它看起来像 javascript...或者我想我很困惑。
    • 不。我认为 dotnetfiddle 演示是 jsfiddle。嘿嘿嘿!会试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多