Я думаю, что W3C DOM представил property 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 предназначен для собственного кода, если вы пишете управляемый код .NET с C# или VB.NET, тогда вы должны использовать классов в пространстве имен System.Xml и ниже.