Reputation: 859
I have an xml document that contains many xml nodes. The document has xsi:nil="true"
attributes. If I set values on these nodes, the nil
attribute remains and it becomes invalid against my xsd.
Question:
How do I remove the xsi:nil
attributes using Delphi 2006 code with the MSXML2_TLB?
I tried this:
xmlNode.attributes.removeNamedItem('xsi:nil');
It runs without an error, but does not remove the attribute.
Upvotes: 0
Views: 2620
Reputation: 163357
Call IXmlDomElement.removeAttribute
on the node itself, not the attribute collection. Any IXmlDomNode
object that represents an element should implement IXmlDomElement
as well, so type-cast the node:
OleCheck((xmlNode as IXmlDomElement).removeAttribute('xsi:nil'));
If you're using the XmlIntf unit instead of the Microsoft DOM, then call IXmlNode.SetAttributeNS
. Pass Null
as the value and the attribute will be removed:
xmlNode.SetAttributeNS('nil', 'xsi', Null);
Upvotes: 2