首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Delphi中创建OpenXML app.xml增加了属性

在Delphi中创建OpenXML app.xml增加了属性
EN

Stack Overflow用户
提问于 2021-08-20 03:20:16
回答 1查看 137关注 0票数 1

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

我要创建的XML文件如下:

代码语言:javascript
复制
<?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>

通过这样做:

代码语言:javascript
复制
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文件,但是我得到了以下内容:

代码语言:javascript
复制
<?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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-20 07:51:34

在创建元素时显式提供命名空间URI:

代码语言:javascript
复制
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';
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68856644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档