Einzelnen Beitrag anzeigen

nalii

Registriert seit: 2. Dez 2005
16 Beiträge
 
#1

mit Delphi ein Word XML Dokument verarbeiten

  Alt 16. Apr 2008, 17:32
Hallo,

ich habe gerade erst angefangen, mich im Umgang mit XML zu beschäftigen, deshalb kann die eine oder andere Frage recht blöd sein.

Ich möchte ein XML Dokument erstellen, um dort über verschiedene Elemente (in der XML Datei unten z.B. Name und Beruf) an deren Werte zu gelangen. Platzhalter in der XML Datei sollen dann von Benutzern gefüllt werden und später möchte ich sie eben wieder auslesen können.

Hier mal das Dokument, wie es per Hand erstellt wurde:

Delphi-Quellcode:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument ">
    <w:docPr>
        <w:showXMLTags w:val="on"/>
   <w:view w:val="page"/>   
   <w:alwaysShowPlaceholderText w:val="on"/>
    </w:docPr>
    <w:body>
      <w:p>
          <w:r>
              <w:rPr>
                  <w:b/>
              </w:rPr>
              <w:t xml:space="preserve">Name: </w:t>
          </w:r>
          <s:name>
              <w:r>
                <w:t>Hans</w:t>
              </w:r>
          </s:name>
      </w:p>
      <w:p>
          <w:r>
              <w:rPr>
                  <w:b/>
              </w:rPr>
              <w:t xml:space="preserve">Beruf: </w:t>
          </w:r>
          <s:beruf>
              <w:r>
                  <w:t>Pilot</w:t>
              </w:r>
          </s:beruf>
      </w:p>
    </w:body>
</w:wordDocument>

Das funktioniert leider nicht alles nicht so richtig (: daher einige Fragen:

1) Beim abspeichern des XML Dokuments via Word verändert sich dessen Struktur bzw. Word fügt 100 Millionen Attribute, usw. hinzu. Das ist erst einmal gar nicht unbedingt schlimm, da die Platzhalter (bspw. Name / Beruf) trotzdem erhalten bleiben. Kann man die eigene Struktur dennoch irgendwie beibehalten?

2) Wenn die Platzhalter gefüllt sind und ich die Werte auslesen möchte, wie stelle ich das am besten an?

Ich habe versucht das XML Dokument per IXmlDocument auslesen und an die Platzhalter zu kommen, was aber nicht so richtig funktionierte. Ich habs folgendermaßen versucht:

Delphi-Quellcode:
  xmlDoc := LoadXmlDocument('e:\_entwicklung\3.xml');
  for i := 0 to Pred(xmldoc.DocumentElement.ChildNodes.Count) do begin
    if xmldoc.DocumentElement.ChildNodes[i].NodeName = 'Berufthen begin
      ShowMessage(VarToStr(xmldoc.DocumentElement.ChildNodes[i].NodeValue))
    end;
  end;
Wenn man sich die Knotennamen ausgibt, dann kommt da der Node 'Beruf' gar nicht vor. Vermutlich nicht, weil er in der Hierarchie noch weiter verschachtelt ist. Bevor ich jetzt aber mit einem falschen Ansatz weiter mache, wollte ich euch fragen, wie ich am Besten an meine selbstdefinierten Platzhalter (in diesem Fall Beruf / Name) komme.

3) Wenn man das XML Dokument oben in Wort öffnet, sollte man Platzhalter sehen. Kann ich in Word den Namen dieser Platzhalter ändern? Dazu habe ich bisher noch keine Möglichkeit gefunden.

Vielen Dank für eure Hilfe
  Mit Zitat antworten Zitat