XmlElement で、名前 A の属性を再帰的に削除するための最も適切で最も整然とした方法はどれですか?
他の同様の質問を見たことがありますが、答えは常に Attribute.Remove() 関数であり、フレームワーク 4.5 以降でのみ使用できます。私は 3.5 フレームワークに取り組んでいますが、私を納得させる方法をまだ見つけていません。
現時点では、次のようなものを書いています。
private void RemoveA(XmlElement elem)
{
if (elem!= null)
{
elem.RemoveAttribute("A", elem.NamespaceURI);
IEnumerator nodeList = elem.ChildNodes.GetEnumerator();
object next = nodeList.MoveNext();
while (next != null)
{
RemoveA(next as XmlElement);
next = nodeList.MoveNext();
}
}
}
これは、特に Object 変数の使用と、remove 属性メソッドでの namespaceURI の使用に関して、それを行うひどい方法として私を本当に驚かせます (なぜ、現在の要素内の名前を検索するオーバーロードが存在しないのですか!?)