XMLBean und Namespace

Status
Nicht offen für weitere Antworten.

kama

Top Contributor
Hallo an euch alle,


ich habe mir mithilfe von XMLBean (V2.0.0) aus einer XML Datei ein Schemata erzeugt und dann mithilfe von scomp entsprechende Java-Klassen bzw. daraus einen Jar-File für mein Projekt.

Jetzt habe ich als Test das Main-Programm unten aufgestellt und obigen Jar Datei eingebunden. Soweit so gut.


Code:
		File xmlFile = new File(args[0]); 

		LogDocument logDoc = null;
		try {
			logDoc = LogDocument.Factory.parse(xmlFile); 
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		} 

		LogType log = logDoc.getLog(); 
		LogentryType[] empArray = log.getLogentryArray(); 
		for (int i = 0; i < empArray.length; i++) 
		{
			System.out.println("Revision: " + empArray[i].getRevision() + " Date: " + empArray[i].getDate()); 
		}

Jetzt zu meinem Problem:
Wenn ich im XML File
folgendes eintrage:

<log xmlns="http://soebes.com/subversion">

Funktioniert das einlesen mit obigen programm einwandfrei.

entferne ich im XML File "xmlns", dann erhalte ich folgende Fehlermeldung:
Code:
org.apache.xmlbeans.XmlException: D:\projekte\TestSVNXML\src\log.xml:0: error: The document is not a [email]log@http://soebes.com[/email]/subversion: document element namespace mismatch expected "http://soebes.com/subversion" got ""
	at org.apache.xmlbeans.impl.store.Locale.verifyDocumentType(Locale.java:449)
	at org.apache.xmlbeans.impl.store.Locale.autoTypeDocument(Locale.java:354)
	at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1270)
	at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1254)
	at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
	at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:252)
	at com.soebes.subversion.LogDocument$Factory.parse(Unknown Source)
	at start.TestSVNXML.main(TestSVNXML.java:18)
java.lang.NullPointerException
	at start.TestSVNXML.main(TestSVNXML.java:24)
Exception in thread "main"

Was ich jetzt wissen möchte, ob man den Namespace des XML Files irgendwie mit XMLBeans setzen kann OHNE die XML Datei verändern zu müssen.

Ich XmlOptions (Doku, google. etc.) gefunden habe es aber bisher nicht hingekriegt, dass das dann auch läuft.

Kann mir vielleicht einer einen Tip geben?

Vielen Dank im Voraus.

MfG
Karl Heinz
 

Bleiglanz

Gesperrter Benutzer
versteh ich nicht

das XML Element hat nun mal den Namespace, das wird ja vom Schema so vorgegeben

warum sollte man den ändern wollen?

Bearbeite das erzeugte Schema lieber von Hand, das ist normalerweise viel zu wichtig um aus einem "Beispieldokument" von einem Tool (z.B. inst2xsd) generiert zu werden...
 

kama

Top Contributor
Hallo,

erstmal danke für die Antwort.

Ich glaube ich habe mich etwas unklar ausgedrückt.

Die XML Datei wird von einem Tool erstellt (wohlgemerkt OHNE xmlns).
Ich habe dann mit inst2xsd ein Schemata erstellt und dann per scomp die das entsprechende Jar mit Klassen usw.

Die Frage ist eben, ob ich im angegebenen Testprogramm den Namespace vor den Laden setzen kann OHNE die XML Datei zu verändern.

Vielen Dank im Voraus.

MfG
Karl Heinz
 

Bleiglanz

Gesperrter Benutzer
Wenn

<log xmlns="http://soebes.com/subversion">

drin steht, dann wird eben von inst2xsd der Namespace eingefügt, wenn nicht, dann halt nicht

wie gesagt ist das völlig unflexibel: das erzeugte Schema wird sich immer an dem einen hingeworfenen Beispiel orientieren, dann müssen alle (!) Dokumente irgendwie genauso aussehen...

also: bearbeite das Schema von Hand...
 

kama

Top Contributor
Hallo,

der Hinweis mit dem Schemata der wars... Manchmal ist man ja ganz schön Blind :(

Vielen Dank.

Code:
<xs:schema
	targetNamespace="xxx"
	elementFormDefault="qualified" 
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
Durch die Entfernung von "targetNamespace" aus dem Schemata habe ich jetzt genau
das was ich möchte.

Meine XML Datei benötigt nun keinen Namespace mehr und wird anstandslos eingelesen.

Vielen Dank für die Hilfe.

MfG
Karl Heinz
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben