简体   繁体   中英

Remove xsi:nil attibute using IXMLDOMDOCUMENT in Delphi

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.

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);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM