XML Element mit ":" im Namen

Status
Nicht offen für weitere Antworten.

outbreaker

Bekanntes Mitglied
Hallo,

Ich möchte ein Word 2003 Dokument als XML erstellen. Also so das ich das Dokument in Word öffnen kann.
Nun wollte ich mit JDOM das Dokument erstellen brauche aber in den Tag namen z. B. vom Element Doppelpunkte

So müsste das aussehen:

Code:
...
Element elementToAdd = new Element("w:wordDocument");
...
bekomme aber diesen Fehler:
Exception in thread "main" org.jdom.IllegalNameException: The name "w:wordDocument" is not legal for JDOM/XML elements: Element names cannot contain colons.
at org.jdom.Element.setName(Element.java:207)
at org.jdom.Element.<init>(Element.java:141)
at org.jdom.Element.<init>(Element.java:153)
at Example2.main(Example2.java:30)

Geht das irgendwie mit JDOM oder gibt es eine andere Bibliothek um XML Dokumente zu erstellen wo Doppelpunkte gehen?

Danke
 
Es gibt keine : im Namen von XML Elementen. Das ist ein Namespace Präfix.
Bist du dir sicher das du auf diese Art ein Word Doc erstellen willst, das scheint mir recht abenteuerlich, bis hoffnungslos.
 
Wildcard hat gesagt.:
... recht abenteuerlich, bis hoffnungslos.
Wie soll ich das verstehen?

Ich habe mir das XML mal angesehen und ich denke das es nicht das Problem wäre wenn ich das mit den Doppelpunkten hinbekommen würde.

Aber daran scheitert es im Moment.
oder hast du eine andere Idee wie ich an ein Worddokument komme?
Hatte mir POI schonmal angesehen aber ich fand kein funktionierendes Beispiel und ich fand das auch relativ kompliziert. Da fand ich die XML Idee am einfachsten.
 
Das Format ist keine offene Spezifikation, was soll daran einfach sein?
Nimm eine der API's, oder OpenOffice.
 
API's für doc?

naja da liegt aus meiner Sicht das Problem so wirklich gibt es da keine

POI fand ich nicht so einfach
OpenXML4J ist gerade mal in der Betaphase

Ich weiß das es keine offene Spezi ist aber die Elemente die ich brauche habe ich soweit schon rausgefiltert.

oder fallen dir gute java APIs ein für Word nicht OpenOffice soll MS Word Dokument sein
 
Installiert nicht unbedingt, OOo gibt's auch Portable.
Wenn du einen Server hast, lässt sich das ganze auch Remote und über Webservices machen.
OOo ist extrem mächtig, aber für ein einfaches Dokument sicherlich übertrieben.
 
Was ist überhaupt dein Zielformat?
Na vielleicht muss ich mir doch was eigenes ausdenken wenn es keine XML API gibt um solche Elemente anzulegen
Das ist natürlich Unsinn, du verstehst nur den Unterschied zwischen dem Namem und dem qualifizierten Namen nicht.
 
Ich möchte ein Dokument generieren welches der Anwender dann in Word öffnen kann um noch spezielle Sachen anzupassen.

Der Benutzer kommt eine Maske kann Sachen einstellen, dann wird das Dokument generiert und kann dann in Word nach bearbeitet werden wenn nötig.
Das ist das Ziel.
Am einfachsten, dachte ich jetzt, ist es das Dokument in dem xml-Format für Word zu erstellen
 
Wildcard hat gesagt.:
Das ist natürlich Unsinn, du verstehst nur den Unterschied zwischen dem Namem und dem qualifizierten Namen nicht.

Das ist möglich ???:L

Das Word XML sieht so aus:

<w:wordDocument w:macrosPresent="no" w:embeddedObjPresent="no" w😱cxPresent="no" xml:space="preserve">
<o😀ocumentProperties>
<o:Author>XYZ</o:Author>
<o:LastAuthor>XYZ</o:LastAuthor>
<o:Revision>1</o:Revision>
<o:TotalTime>0</o:TotalTime>
<o:Created>2008-06-10T18:06:00Z</o:Created>
.......

Kann ich sowas mit JDOM erreichen?
 
Was soll's denn werden? WordprocessingML 2003?
OfficeOpenXML Prä-ISO OfficeOpenXML Post ISO?

Mit allen drei Formaten wäre ich sehr vorsichtig, da sie eher schlecht als recht funkionieren.
Die hässliche Binärvariante (mit zB POI) ist AFAIK robuster.
Und ja, natürlich kann man das mit JDom machen.

EDIT:
oder nimm doch einfach RTF, das ist wesentlich einfacher und genügt für einfache Dokumente vollkommen.
 
An RTF hatte ich auch schon gedacht.
gibt es für RTF eine Java API?

Wir kann ich das mit den Doppelpunkten und JDOM realisieren?
 
vielleicht stehe ich ja gerade auf dem Schlauch aber das geht nicht:

Code:
Element root = new Element("w",":","wordDocument");

Exception in thread "main" org.jdom.IllegalNameException: The name ":" is not legal for JDOM/XML Namespace prefixs: Namespace prefixes cannot contain colons.
at org.jdom.Namespace.getNamespace(Namespace.java:158)
at org.jdom.Element.<init>(Element.java:184)
at Example1.main(Example1.java:17)
 
Sofern es sich um Wordprocessing ML 2003 handelt (die Frage ignorierst du ja), rate ich einfach ins Blaue das w der Präfix für
Code:
http://schemas.microsoft.com/office/word/2003/wordml
sein soll. Aus den Informationen die du mir zur Verfügung stellst lässt sich das allerdings nicht herleiten.
Ein XML Auffrischungskurs wäre wohl angebracht bevor du versuchst ein wordML zu basteln.
 
aso

also so
Code:
Element root = new Element("wordDocument","w","xyz");

geht das auch für Attribute?

muss ja sowas hinbekommen
<w:wordDocument w:macrosPresent="no" w:embeddedObjPresent="no" w😱cxPresent="no" xml:space="preserve">

habe bei setAttribute nicht diese Möglichkeit gefunden
 
Wildcard hat gesagt.:
Sofern es sich um Wordprocessing ML 2003 handelt (die Frage ignorierst du ja), rate ich einfach ins Blaue das w der Präfix für
Code:
http://schemas.microsoft.com/office/word/2003/wordml
sein soll. Aus den Informationen die du mir zur Verfügung stellst lässt sich das allerdings nicht herleiten.
Ein XML Auffrischungskurs wäre wohl angebracht bevor du versuchst ein wordML zu basteln.

sorry Frage überlesen :shock:

ja es soll WordprocessingML 2003 werden
in XML werde ich mich noch genauer einarbeiten :### aber auch "learning by doing" :wink:
 
http://www.jdom.org/docs/apidocs/org/jdom/Element.html#setAttribute(java.lang.String,%20java.lang.String,%20org.jdom.Namespace)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben