Удалите xsi: nil attibute, используя IXMLDOMDOCUMENT в Delphi. - PullRequest
0 голосов
/ 16 декабря 2010

У меня есть XML-документ, который содержит много узлов XML.Документ имеет xsi:nil="true" атрибутов.Если я установлю значения для этих узлов, атрибут nil останется, и он станет недействительным для моего xsd.

Вопрос:

Как удалить атрибуты xsi:nil, используя код Delphi 2006 с MSXML2_TLB?

Я пытался это сделать:

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

Работает без ошибок, но не удаляет атрибут.

1 Ответ

2 голосов
/ 16 декабря 2010

Вызовите IXmlDomElement.removeAttribute на самом узле, а не на коллекции атрибутов. Любой объект IXmlDomNode, представляющий элемент, также должен реализовывать IXmlDomElement, поэтому приведите тип узла:

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

Если вы используете модуль XmlIntf вместо Microsoft DOM, тогда вызовите IXmlNode.SetAttributeNS. Передайте Null в качестве значения и атрибут будет удален:

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