如何在XML文档中创建xmlns:xsi和xsd信息

时间:2012-06-17 22:46:29

标签: xml delphi delphi-xe

我有一个Delphi XE应用程序,它读取经过验证的XML文件,对其进行修改然后保存。可以验证保存的版本。我使用SML Spy来创建文件并对其进行验证。

现在我需要在内存中创建一个文档并保存它。问题是我无法弄清楚如何为文档生成xmlns和xsd信息属性,以便验证它。

1 个答案:

答案 0 :(得分:6)

实际上,尽管我上面的评论,我发现最简单的方法不是使用DeclareNamespace

这是一个甚至在表单上都不使用TXMLDocument的示例。只需将xmldomXMLIntfXMLDoc添加到您的实施使用条款(Xml.xmldomXml.XMLIntfXml.XMLDoc for XE2),然后这有效:

procedure TForm1.Button1Click(Sender: TObject);
var
  TheDoc: IXmlDocument;
  iNode: IXmlNode;
  xmlText: DOMString;
begin
  TheDoc := NewXMLDocument;
  TheDoc.Version := '1.0';
  TheDoc.Encoding := 'UTF-16';
  iNode := TheDoc.AddChild('test:test_file');
  iNode.SetAttributeNS('xmlns:test', '', 'http://www.foo.com' );
  iNode.SetAttributeNS('xmlns:xsi', '', 'http://www.w3.org/2001/XMLSchema');
  TheDoc.SaveToXML(xmlText);
  Memo1.Lines.Text := xmlText;
end;

上述结果在TMemo

中产生
<?xml version="1.0" encoding="UTF-16"?>
<test:test_file xmlns:test="http://www.foo.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema"/>