小编CW_*_*161的帖子

删除具有给定名称的所有XML属性

我正在编辑一系列XML文件,我需要删除名为"foo"的所有属性.此属性出现在多种元素中.XML中的示例代码段可能是:

<bodymatter id="######">
  <level1 id="######">
    <pagenum page="#####" id="######" foo="######" />
    <h1 id="#####" foo="#####">Header</h1>
    <imggroup id="#######">
               .
               .
              etc.
Run Code Online (Sandbox Code Playgroud)

我使用的最佳解决方案是使用Regex:

Regex regex = new Regex("foo=\"" + ".*?" + "\"", RegexOptions.Singleline);
content = regex.Replace(content, "");
Run Code Online (Sandbox Code Playgroud)

我知道内置的XML解析器可以提供帮助,但理想情况下我想要进行简单的XML替换/删除,而不必处理整个XML解析器的包袱.在这种情况下,Regex是最好的解决方案吗?

编辑:

在对XmlDocument类进行一些研究之后,我提出了一个可能的解决方案(删除存储在数组"ids"中的多个属性类型):

private void removeAttributesbyName(string[] ids)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(path);
    XmlNodeList xnlNodes = doc.GetElementsByTagName("*");
    foreach (XmlElement el in xnlNodes)
    {
        for (int i = 0; i <= ids.Length - 1; i++)
        {
            if (el.HasAttribute(ids[i]))
            {
                el.RemoveAttribute(ids[i]);
            }
            if (el.HasChildNodes)
            {
                foreach (XmlNode …
Run Code Online (Sandbox Code Playgroud)

c# xml replace

5
推荐指数
1
解决办法
5807
查看次数

标签 统计

c# ×1

replace ×1

xml ×1