C#学习教程:删除所有具有给定名称的XML属性此属性出现在各种元素上。XML的示例片段可以是:Header。.等等我使用的最佳解决方案是使用Regex:Regexregex=newRegex("foo=""+".*?"+""",RegexOptions.Singleline);content=regex.Replace(content,"");我知道内置的XML解析器可以提供帮助,但理想情况下我想做简单的XML替换/删除,而不必处理整个XML解析器的包袱。在这种情况下,正则表达式是最好的解决方案吗?编辑:在对XmlDocument类进行一些研究之后,我想出了一个可能的解决方案(删除存储在数组“ids”中的多个属性类型):doc.Load(路径);XmlNodeListxnlNodes=doc.GetElementsByTagName("*");foreach(XmlElementelinxnlNodes){for(inti=0;i<=ids.Length-1;i++){if(el.HasAttribute(ids[i])){el.RemoveAttribute(ids[i]);}}if(el.HasChildNodes){foreach(XmlNodechildinel.ChildNodes){if(childisXmlElement&&(childasXmlElement).HasAttribute(ids[i])){(childasXmlElement).RemoveAttribute(ids[i]);}}}}}}我不知道这是否尽可能高效,但我已经测试过了,它似乎工作正常。不要使用正则表达式进行XML操作。您可以使用LinqtoXML:XDocumentxdoc=XDocument.Parse(xml);foreach(varnodeinxdoc.Descendants().Where(e=>e.Attribute("foo")!=null)){node.Attribute("foo").Remove();}字符串结果=xdoc.ToString();在这种情况下,正则表达式是最好的解决方案吗?不。您需要在对象级别(例如,作为XmlElement)而不是字符串级别使用适用于XML的内容。我使用以下命令删除命名空间。这也可用于从其他节点删除属性。以上是C#学习教程:删除给定名称的所有XML属性共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——FileStreamfs=newFileStream(filePath,FileMode.Open);StreamReadersr=newStreamReader(fs);数据集ds=new数据集();ds.ReadXml(sr);ds.Namespace="";字符串outXML=ds.GetXml();ds.Dispose();sr.Dispose();fs.Dispose();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
