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 = 'Beruf' then 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