2013-09-05 3 views
2

XML을 기반으로 한 열린 문서 형식 (odt)으로 텍스트 문서를 생성 중입니다. 하지만 텍스트 통로에 표를 추가 할 때 문제가 있습니다. 나는 오픈 오피스 응용 프로그램에서 생성하고 문서를 저장할 때 통과는 내부 XML 표현이 있습니다xml 노드를 텍스트에 추가/삽입하는 방법

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

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

를 생성 자동으로 내 소스 코드에서이 부분에 와서을

하지만 "Tim"전에 텍스트에 노드를 추가하거나 내부 델파이 XML 라이브러리가 아닌 노드를 추가하는 방법을 찾을 수 없습니다.

이를 수행 할 방법이 있습니까? 아니면이를 수행 할 수있는 다른 Delphi XML 라이브러리가 있습니까?

답변

5

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); 
+0

나는 변경 후 : 'Node1 : = Node.OwnerDocument.CreateElement ('text : tab'); ' to 'Node1 : Node.OwnerDocument.CreateElement ('text : tab ',' ');' 완벽하게 작동했습니다! – Niels

+3

+1. 훌륭한 대답, 특히 삽화. 니스, 레미. :-) –