我正在生成一个基于XML的开放文档格式(ODT)文本文档。
但我在课文中添加制表符时遇到了问题。
当我在open office应用程序中创建它并保存文档时,文章的内部xml表示如下:

<text:p text:style-name="P5">Prepared by: <text:tab/>Tim Test</text:p>

当自动生成它时,我在源代码中找到了这一部分:
   Node, Node1: IXMLNode;
   ...
   Node := Node1.AddChild('text:p');
   Node.Attributes['text:style-name'] := 'P5';
   Node.Text := 'Prepared by: Tim Test';

但是我找不到任何方法在“tim”之前将节点添加到文本中,或者至少没有使用内部delphi xml库。
有办法实现它吗?或者有其他DelphiXML库可以做到这一点吗?

最佳答案

请记住,XML是节点的层次结构,包括文本片段。您显示的XML在树中如下所示:

[element] 'text:p'
  │
  ├─[attributes]
  │   │
  │   └─[attribute] 'text:style-name'
  │       │
  │       └─[text] 'PS'
  │
  └─[children]
      |
      ├─[text] 'Prepared by: '
      │
      ├─[element] 'text:tab'
      │
      └─[text] 'Tim Test'

这将帮助您可视化如何向文档中添加节点以获得所需的输出,例如:
Node, Node1, Node2: IXMLNode;
...
Node := Node1.AddChild('text:p');
Node.Attributes['text:style-name'] := 'P5';

Node2 := Node.OwnerDocument.CreateNode('Prepared by: ', ntText);
Node.ChildNodes.Add(Node2);

Node2 := Node.OwnerDocument.CreateElement('text:tab', '');
Node.ChildNodes.Add(Node2);

Node2 := Node.OwnerDocument.CreateNode('Tim Test', ntText);
Node.ChildNodes.Add(Node2);

09-30 12:18
查看更多