2010-12-16 3 views
0

xmi : xil : nil = "true"속성을 가진 xmldocument에 많은 xml 노드가 있습니다. 이 노드에 값을 설정하면 nil 속성이 그대로 유지되고 내 xsd에 대해 유효하지 않게됩니다. MSXML2_TLB를 사용하여 Delphi 2006 코드에서 xsi : nil 속성을 제거하려면 어떻게합니까? 나는 시도했다 :델파이에서 IXMLDOMDOCUMENT를 사용하여 xsi : nil attibute를 제거하십시오.

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

이것은 오류없이 실행되지만 속성을 제거하지는 않습니다.

도와주세요!

답변

2

노드에서 속성 집합이 아닌 IXmlDomElement.removeAttribute을 호출하십시오.

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

대신 마이크로 소프트 DOM의 XmlIntf 장치를 사용하는 경우, 다음 IXmlNode.SetAttributeNS를 호출뿐만 아니라 IXmlDomElement를 구현하고, 그렇게해야 요소를 나타냅니다 모든 IXmlDomNode 개체 노드를 입력은 캐스트. 값으로 Null을 전달하면 속성이 삭제됩니다.

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

죄송합니다. 내 질문에 더 많은 정보를 제공해야합니다. 저는 XML에 접근하기 위해 Delphi 2006과 MSXML2_TLB 클래스를 사용하고 있습니다. IXMLDOMNode 클래스에는 'removeAttribute'메소드가 없습니다. IXMLDOMNode 매개 변수로 속성을 제공 할 때 오류를 던지는 'removeChild'에 대한 항목 만 있습니다. 유감스럽게도 마감 기한이 짧아서 현재 Micrsoft DOM에 다른 기술을 사용하는 것에 대해 생각할 수 없습니다. 생각해 줘서 고마워. – JamesW

+0

IXMLDOElement 클래스에는 removeAttribute 메소드가 있지만 IXMLDOElement 요소를 pape xpath로 채우려 고 고군분투하고 있습니다. IXMLDOElement 객체에 노드 (documentElement보다 XML에서 훨씬 더 깊은 노드)를 얻는 방법을 알고 있습니까? 아마 그 각도에서 공격 할 수 있을까요? – JamesW

관련 문제