使用XMLDOM名称空间

时间:2016-05-23 12:00:21

标签: delphi delphi-xe delphi-xe7

我对XML名称空间有点困惑。我想请一点帮助。

我需要什么...我的命名空间如下:

<?xml version="1.0" encoding="iso-8859-2"?>
<Application_data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

我做的是:

procedure BeginExport;
var
  FOutputXML: IXMLDOMDocument;
  vNode: IXMLDOMNode;
begin
  DoBeginBeginExport;

  if FOutputXML = nil then
  begin
    FOutputXML := CoDOMDocument.Create;
    FOutputXML.appendChild(FOutputXML.createProcessingInstruction('xml', 'version="1.0" encoding="iso-8859-2"'));      

    vNode := FOutputXML.appendChild(FOutputXML.createElement('Application_data')); 
    vNode.attributes.setNamedItem(vNode.ownerDocument.createAttribute('????')).text := '"http://www.w3.org/2001/XMLSchema-instance';

  end else FOutputXML.removeChild(FOutputXML.firstChild);
  DoAfterBeginExport;
end;

在Createattribute不起作用后使用“xmlns:xsi”。任何人都可以帮助我做错了什么或者设置命名空间属性的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,但我认为这不是最佳解决方案。

//vAttr: IXMLDOMAttribute;

vAttr := FOutputXML.createAttribute('xmlns:xsi');
vAttr.value := 'http://www.w3.org/2001/XMLSchema-instance';
vNode.attributes.setNamedItem(vAttr);
vAttr := FOutputXML.createAttribute('xmlns:xsd');
vAttr.value := 'http://www.w3.org/2001/XMLSchema-instance';
vNode.attributes.setNamedItem(vAttr);