W3C DOM はownerElement プロパティを導入したと思いますが、MSXML は W3C DOM に追いつこうとはしていません。したがって、私が考えることができる最善の方法は、親要素を見つけるための XPath と selectSingleNode です。JScript と MSXML 6 を使用した例を次に示します。
var doc = new ActiveXObject("Msxml2.DOMDocument.6.0");
if (doc.loadXML([
'<root>',
' <foo att="1"/>',
' <bar att="2"/>',
'</root>'
].join('\r\n')))
{
var attributes = doc.selectNodes('//@att');
for (var i = attributes.length - 1; i >= 0; i--)
{
attributes[i].selectSingleNode('..').removeAttributeNode(attributes[i]);
}
WScript.Echo(doc.xml);
}
else
{
WScript.Echo(doc.xml);
}
出力は次のとおりです。
<root>
<foo/>
<bar/>
</root>
したがって、アプローチは機能します。私はあなたがJScriptを使用していないことを理解していますが、おそらくC++のようなメソッドを公開する適切なインターフェースを取得するためにキャストを追加する必要がありますがremoveAttributeNode
、アプローチの概要を説明するには上記で十分です。
最後のメモとして、プログラミング言語や環境については触れておらず、VS 2010 についてのみ言及しているため、MSXML はネイティブ コード用です。C# または VB.NET でマネージ .NET コードを記述する場合は、名前空間のクラスを使用する必要があります。 System.Xml 以下。