0

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

问题:

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

我试过这个:

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

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

4

1 回答 1

2

调用IXmlDomElement.removeAttribute节点本身,而不是属性集合。任何IXmlDomNode表示元素的对象也应该实现IXmlDomElement,因此对节点进行类型转换:

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

如果您使用XmlIntf单元而不是 Microsoft DOM,则调用IXmlNode.SetAttributeNS. 作为值传递Null,属性将被删除:

xmlNode.SetAttributeNS('nil', 'xsi', Null);
于 2010-12-16T16:26:10.390 回答