如何在文本中添加/插入xml节点

Nie*_*els 2 xml delphi openoffice.org openoffice-writer

我正在以开放文档格式(odt)生成基于XML的文本文档.但是在文本段落中添加制表符时遇到问题.当我在Open Office应用程序中创建它并保存文档时,该段落具有内部XML表示形式:

<text:p text:style-name="P5">Prepared by: <text:tab/>Tim Test</text:p>
Run Code Online (Sandbox Code Playgroud)

当自动生成它时,我在源代码中来到这一部分:

   Node, Node1: IXMLNode;
   ...
   Node := Node1.AddChild('text:p');
   Node.Attributes['text:style-name'] := 'P5';
   Node.Text := 'Prepared by: Tim Test';
Run Code Online (Sandbox Code Playgroud)

但我找不到任何方法在"Tim"之前将节点添加到文本中,或者至少不在内部Delphi XML库中.

有没有办法实现它,还是有任何其他Delphi XML库可以做到这一点?

Rem*_*eau 5

请记住,XML是节点的层次结构,包括文本片段.您显示的XML在树中看起来像这样:

[element] 'text:p'
  ?
  ??[attributes]
  ?   ?
  ?   ??[attribute] 'text:style-name'
  ?       ?
  ?       ??[text] 'PS'
  ?
  ??[children]
      |
      ??[text] 'Prepared by: '
      ?
      ??[element] 'text:tab'
      ? 
      ??[text] 'Tim Test'
Run Code Online (Sandbox Code Playgroud)

这应该可以帮助您直观地了解如何向文档中添加节点以获得所需的输出,例如:

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);
Run Code Online (Sandbox Code Playgroud)

  • +1.优秀的答案,尤其是插图.好的,雷米.:-) (3认同)