我有一个包含许多xml节点的xml文档。该文档具有xsi:nil="true"
个属性。如果我在这些节点上设置值,nil
属性将保留,并且对我的xsd无效。
问题:
如何使用带有MSXML2_TLB的Delphi 2006代码删除xsi:nil
属性?
我试过了:
xmlNode.attributes.removeNamedItem('xsi:nil');
它运行时没有错误,但不删除属性。
答案 0 :(得分:2)
在节点本身上调用IXmlDomElement.removeAttribute
,而不是属性集合。表示元素的任何IXmlDomNode
对象也应该实现IXmlDomElement
,因此键入节点:
OleCheck((xmlNode as IXmlDomElement).removeAttribute('xsi:nil'));
如果您使用 XmlIntf 单元而不是Microsoft DOM,请致电IXmlNode.SetAttributeNS
。将Null
作为值,将删除该属性:
xmlNode.SetAttributeNS('nil', 'xsi', Null);