使用Delphi中的IXMLDOMDOCUMENT删除xsi:nil属性

时间:2010-12-16 11:43:27

标签: xml delphi delphi-2006 ixmldomdocument

我有一个包含许多xml节点的xml文档。该文档具有xsi:nil="true"个属性。如果我在这些节点上设置值,nil属性将保留,并且对我的xsd无效。

问题:

如何使用带有MSXML2_TLB的Delphi 2006代码删除xsi:nil属性?

我试过了:

xmlNode.attributes.removeNamedItem('xsi:nil');

它运行时没有错误,但不删除属性。

1 个答案:

答案 0 :(得分:2)

在节点本身上调用IXmlDomElement.removeAttribute,而不是属性集合。表示元素的任何IXmlDomNode对象也应该实现IXmlDomElement,因此键入节点:

OleCheck((xmlNode as IXmlDomElement).removeAttribute('xsi:nil'));

如果您使用 XmlIntf 单元而不是Microsoft DOM,请致电IXmlNode.SetAttributeNS。将Null作为值,将删除该属性:

xmlNode.SetAttributeNS('nil', 'xsi', Null);