文書内の属性 "nil = true"を持つXML要素を消去しようとしています。 私はこの孤独を考え出すが、それはどのように見えるのが好きではない。属性 "nil = true"でXML要素をクリーンアップします - linqバージョンを作成しますか?
誰でもこのalgoのバージョンを知っていますか?
/// <summary>
/// Cleans the Xml element with the attribut "nil=true".
/// </summary>
/// <param name="value">The value.</param>
public static void CleanNil(this XElement value)
{
List<XElement> toDelete = new List<XElement>();
foreach (var element in value.DescendantsAndSelf())
{
if (element != null)
{
bool blnDeleteIt = false;
foreach (var attribut in element.Attributes())
{
if (attribut.Name.LocalName == "nil" && attribut.Value == "true")
{
blnDeleteIt = true;
}
}
if (blnDeleteIt)
{
toDelete.Add(element);
}
}
}
while (toDelete.Count > 0)
{
toDelete[0].Remove();
toDelete.RemoveAt(0);
}
}
を使用XML名前空間については何も言及していませんが、http://www.w3.org/2001/XMLSchema-instance名前空間(しばしば接頭辞 'xsi'を使用します)は' nil'属性を持っています。これはnil要素に対して 'true' 。それが使用している属性の場合は、回答が期待どおりに機能しない理由が説明されています。答えは、デフォルトの名前空間で 'nil'属性を探し、あなたのXMLでは動作しません。 –