Gil*_*lla 2 c# linq xmldocument linq-to-xml xattribute
在我的C#代码库中,我有一个XMLDocument表单:
<A>
<B>
<C mlns='blabla' yz='blablaaa'> Hi </C>
<D mlns='blabla' yz='blablaaa'> How </D>
<E mlns='blabla' yz='blablaaa'> Are </E>
<F mlns='blabla' yz='blablaaa'> You </F>
</B>
<B>
<C mlns='blabla' yz='blablaaa'> I </C>
<D mlns='blabla' yz='blablaaa'> am</D>
<E mlns='blabla' yz='blablaaa'> fine</E>
<F mlns='blabla' yz='blablaaa'> thanks</F>
</B>
</A>
Run Code Online (Sandbox Code Playgroud)
使用Linq-to-XML或其他方法,我想删除元素包含的所有元素的mlns和yz属性B.
实现它的最佳方法是什么?
使用LINQ to XML ...
public static void RemoveAttributes(XNode parent, XName attribute)
{
// I'm not sure what would happen if we tried to remove the attribute
// while querying... seems like a bad idea.
var list = parent.Descendants()
.Attributes(attribute)
.ToList();
foreach (var attribute in list)
{
attribute.Remove();
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
RemoveAttributes(doc, "mlns");
RemoveAttributes(doc, "yz");
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚注意到它应该更容易,实际上,使用Remove扩展方法:
public static void RemoveAttributes(XNode parent, XName attribute)
{
parent.Descendants()
.Attributes(attribute)
.Remove();
}
Run Code Online (Sandbox Code Playgroud)
所以你甚至可以在没有方法的情况下完成它:
doc.Descendants().Attributes("mlns").Remove();
doc.Descendants().Attributes("yz").Remove();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7949 次 |
| 最近记录: |