我有一个包含许多 xml 节点的 xml 文档。文档具有xsi:nil="true"
属性。如果我在这些节点上设置值,该nil
属性仍然存在,并且对我的 xsd 无效。
问题:
如何xsi:nil
使用带有 MSXML2_TLB 的 Delphi 2006 代码删除属性?
我试过这个:
xmlNode.attributes.removeNamedItem('xsi:nil');
它运行没有错误,但不会删除该属性。
我有一个包含许多 xml 节点的 xml 文档。文档具有xsi:nil="true"
属性。如果我在这些节点上设置值,该nil
属性仍然存在,并且对我的 xsd 无效。
问题:
如何xsi:nil
使用带有 MSXML2_TLB 的 Delphi 2006 代码删除属性?
我试过这个:
xmlNode.attributes.removeNamedItem('xsi:nil');
它运行没有错误,但不会删除该属性。
调用IXmlDomElement.removeAttribute
节点本身,而不是属性集合。任何IXmlDomNode
表示元素的对象也应该实现IXmlDomElement
,因此对节点进行类型转换:
OleCheck((xmlNode as IXmlDomElement).removeAttribute('xsi:nil'));
如果您使用XmlIntf单元而不是 Microsoft DOM,则调用IXmlNode.SetAttributeNS
. 作为值传递Null
,属性将被删除:
xmlNode.SetAttributeNS('nil', 'xsi', Null);