在 Delphi 中创建 OpenXML app.xml 已添加属性

Creating OpenXML app.xml in Delphi has added attributes

我正在 Delphi 中使用 OpenXML 创建一个 .docx 文件。当我在 Delphi 中创建 \docProps\app.xml 以生成 docx 时,由于某种原因总是添加一个标签。

我要创建的XML文件是这样的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
    xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
  <Template>Normal.dotm</Template>
  <TotalTime>1</TotalTime>
  <Pages>1</Pages>
  <Words>1</Words>
  ...
</Properties>

通过这样做:

var
  Root: IXMLNode;
  Rel: IXMLNode;

  Root := XMLDocument1.addChild('Properties');
  ... //attributes are added here

  Rel := Root.AddChild('Template');
  Rel.NodeValue := 'Normal.dotm';
  Rel := Root.AddChild('TotalTime');
  Rel.NodeValue := '1';
  ...

我原以为上面的代码会在顶部生成 XML 文件,但我得到了这个:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
  <Template xmlns="">Normal.dotm</Template >
  <TotalTime xmlns=""></TotalTime>
  <Pages xmlns="">1</Pages>
</Properties>

由于某种原因添加了 xmlns 属性。有没有办法在顶部达到预期的 XML?

创建元素时明确提供名称空间 URI:

const
  PROP_NS = 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties';

var
  Root: IXMLNode;
  Rel: IXMLNode;

  Root := XMLDocument1.AddChild('Properties', PROP_NS);
  Rel := Root.AddChild('Template', PROP_NS);
  Rel.NodeValue := 'Normal.dotm';
  Rel := Root.AddChild('Pages', PROP_NS);
  Rel.NodeValue := '1';