【问题标题】:How to create xmlns:xsi and xsd information in an XML document如何在 XML 文档中创建 xmlns:xsi 和 xsd 信息
【发布时间】:2012-06-17 22:46:29
【问题描述】:

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

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

【问题讨论】:

  • 您使用的是哪个 XML 库?它们的设计各不相同。
  • 我正在使用作为 Delphi XE 一部分的 TXMLDocument。

标签: xml delphi delphi-xe


【解决方案1】:

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

这是一个在表单上甚至没有使用TXMLDocument 的示例。只需将 xmldom、XMLIntf 和 XMLDoc 添加到您的实现使用子句(Xml.xmldom、Xml.XMLIntf 和 Xml.XMLDoc 对于 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"/>

【讨论】:

  • 做到了。这有点令人困惑,因为您的示例有两个 xmlDoc(一个在使用子句中,一个在按钮 Var 中)但是在我整理出来之后 - 甜蜜
猜你喜欢
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
相关资源
最近更新 更多