Elemente mit Prefix via JDOM erstellen

Status
Nicht offen für weitere Antworten.

marvin

Mitglied
Hi,

hab ein kleines Problem, und zwar will ich mit Java folgende XML-Struktur in ein bereits bestehendes XML-FIle einfuegen:

Code:
<xinclude:include href="irgendwas.xml" />

Mein Problem ist es, wie ich das Prefix xinclude mit reinbekomm. Also ich koennte ohne Probleme

Code:
<include href="irgendwas.xml" />

erstellen.

Habe auch schon folgendes probiert:

Code:
Namespace xincludeNamespace = Namespace.getNamespace("xinclude", "http://www.w3.org/2001/XInclude");
	Element myElement = new Element("include", xincludeNamespace);
	myElement.setAttribute( new Attribute("href", "irgendwas.xml"));
	multiroot.addContent(myElement);

Allerdings erzeugt er mir dann:

Code:
<xinclude:include xmlns:xinclude="http://www.w3.org/2001/XInclude" href="irgendwas.xml" />

und das: xmlns:xinclude="http://www.w3.org/2001/XInclude" stoert da gewaltig. Gibt es eine Moeglichkeit das ganze ohne den stoerenden Teil hinzubekommen oder vielleicht auch en ganz anderer Ansatz?

Waere fuer hilfe sehr dankbar.
 

Bleiglanz

Gesperrter Benutzer
wieso stört das? es muss ja da sein, weil sonst der namespace gar nicht bekannt ist, der prefix ist ja nur eine Abkürzung
 

marvin

Mitglied
ja aber der namespace ist doch oben im dokument bereits definiert:

hier mal ein groesserer Ausschnitt:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document SYSTEM "../sys/m.dtd">
<document xmlns:xinclude="http://www.w3.org/1999/XML/xinclude">

<xinclude:include href="irgendwas1.xml" /> 
<xinclude:include href="irgendwas2.xml" /> 
<xinclude:include href="irgendwas3.xml" /> 
<xinclude:include href="irgendwas4.xml" /> 

</document>

nachdem ich dieses XML-Dokument erstellt hab fuehrt mein Java-prog noch eine xslt transformation durch und die schlaegt fehl wenn das Dokument stattdessen so aussieht:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document SYSTEM "../sys/m.dtd">
<document xmlns:xinclude="http://www.w3.org/1999/XML/xinclude">

<xinclude:include xmlns:xinclude="http://www.w3.org/1999/XML/xinclude"  href="irgendwas1.xml" /> 
<xinclude:include xmlns:xinclude="http://www.w3.org/1999/XML/xinclude"  href="irgendwas2.xml" /> 
<xinclude:include xmlns:xinclude="http://www.w3.org/1999/XML/xinclude"  href="irgendwas3.xml" /> 
<xinclude:include xmlns:xinclude="http://www.w3.org/1999/XML/xinclude"  href="irgendwas4.xml" /> 

</document>

Hab das xmlns... schonmal manuell vor der XSLT-Transformation rausgeloescht, dann gehts.
 

Bleiglanz

Gesperrter Benutzer
Code:
   Document doc = new Document();
   Namespace xincludeNamespace = Namespace.getNamespace("xinclude", "http://www.w3.org/2001/XInclude");

   Element multiroot = new Element("multiroot"); 
   multiroot.addNamespaceDeclaration(xincludeNamespace);
   doc.setRootElement(multiroot);

// hier kommts: den gleichen Namespace wieder verwenden
   Element myElement = new Element("include", xincludeNamespace);
 

marvin

Mitglied
HI und erstma Danke fuer deine Muehe,alerdings funkioniert es bei mir leider immer noch nicht. Ich bekomme folgende Fehlermeldung:


org.jdom.IllegalAddException: The namespace xmlns:xinclude="http://www.w3.org/20
01/XInclude" could not be added as a namespace to "document": The namespace pref
ix "xinclude" collides with an additional namespace declared by the element

Hier ist mein Code:

Es wird erst der Konstruktor aufgerufen, und direkt danach die methode pdfManipulation. Das bedeutet ich benutz ein bereits bestehende xml Dokument und schreib in das multiroot,das ich auslese den neuen Namensraum und versuche das gesetze Praefix dann fuer die einzelnen Elemente zu uebernehmen. Das ganze wird x-mal aufgerufen. Jedes mal wird ein neues Element hinzugefuegt.

Code:
//Konstruktor
public XMLParser(File aFile)  {

   File file = aFile;

   if (file.exists()) {

	  try {
		   saxBuilder = new SAXBuilder(false);           //validierend
		   document = saxBuilder.build(file);
		   docType = document.getDocType();
                                    //auslesen des root elements
		   multiroot = document.getRootElement();

	  } catch (JDOMException ex)  {
		  success = false;
		  ex.printStackTrace();
		  failureMessage = ex.getMessage();

	  } catch (Exception ex) {
		  success = false;
		  failureMessage = ex.getMessage();
	  }

   } else {
		 success = false;
		 failureMessage = "Datei "+ file.getAbsolutePath() + " nicht gefunden";
		 
		 System.out.println(failureMessage);
   }

}



public void pdfManipulation(int zaehler, String xmlFile){
	
//der zaehler gib die anzahl der durchlaufe an
	int myZaehler = zaehler;
	String href = xmlFile;

Namespace xincludeNamespace = Namespace.getNamespace("xinclude", "http://www.w3.org/2001/XInclude");


// nur beim ersten Element wird der Namensraum im multiroot geaddet.(habs auch probiert dass er immer 
// gesetst wird,gabden selben fehler

if (myZaehler==1){
    multiroot.removeChildren();
    multiroot.addNamespaceDeclaration(xincludeNamespace);
}

Element myElement = new Element("include", xincludeNamespace);
myElement.setAttribute( new Attribute("href", ".." + File.separator + href));
multiroot.addContent(myElement);



File outFile = new File( Parameter.getInstance().getParameter("baseDir") + File.separator + "tmp" + File.separator + "inc.xml");
	
	try {

		FileOutputStream outStream = new FileOutputStream( outFile );
		XMLOutputter out = new XMLOutputter();
		out.output( document, outStream );

	} catch ( java.io.IOException ex) {
		ex.printStackTrace();
	}
}


Die xml die ich als input benutze sieht ganz einfach so aus:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document SYSTEM "../sys/m.dtd">
<document> 
</document>

Waere super wenn du noch ne Idee haettest.
 

Bleiglanz

Gesperrter Benutzer
schreib mal die Zeile
Code:
Namespace xincludeNamespace = Namespace.getNamespace("xinclude", "http://www.w3.org/2001/XInclude");
ausserhalb (!) der Methode
Code:
public void pdfManipulation(int zaehler, String xmlFile){

sonst holst du ja bei jedem Durchgang doch wieder eine neue Instanz von der Factory
 

marvin

Mitglied
hab die zeile aus der methode rausgenommen, bekomm aber leider noch den selben fehler.

hab dann mal zum spass auch die zeile rausgenommen(also ganz rausgeloescht):

Code:
multiroot.addNamespaceDeclaration(xincludeNamespace);

er schreibt mir allerdings trotzdem in meine xml ins multiroot (document) den namespace:

Code:
<document xmlns:xinclude="http://www.w3.org/1999/XML/xinclude">
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L XML einlesen gleichnamige Elemente XML & JSON 5
J Parent- und Child-Elemente mit gleiche Namen, geht das ? XML & JSON 1
S XML - Bestehende Elemente ändern XML & JSON 1
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
R Verschachtelung gleichnamiger Elemente XML & JSON 7
D optionale Elemente mit defaultwerten werden in xml miterzeugt XML & JSON 2
A Elemente aus mehreren XML-Dateien zu einem zusammenfügen XML & JSON 5
G JAXB und verschachtelte Elemente? XML & JSON 6
J Anzahl der Elemente in einem XML-Dokument auslesen XML & JSON 7
F Hilfe beim bearbeiten von XML elemente XML & JSON 3
G Wieviele Elemente von TagName, ich brings nicht hin XML & JSON 5
G Leere Elemente verhindern XML & JSON 7
aze JaxB Elemente in LinkedHashSet werden nicht wiededergegeben XML & JSON 3
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
D Tabs/Einrückungen der XML-Elemente gehen beim Schreiben verloren XML & JSON 5
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
S JTree - Nur Elemente mit Attributen einfügen XML & JSON 2
T Elemente zählen mit JDOM in XML XML & JSON 7
G XML Parser Fehler, zwei gleiche kind-Elemente XML & JSON 7
F Elemente sortieren lassen XML & JSON 2
I Editor, der nur Elemente einfuegt, die nach xsd zulaessig XML & JSON 2
G xml einlesen und bestimmte Elemente an eine gui_Klasse überg XML & JSON 25
H Elemente eines Node auslesen XML & JSON 2
M XML Elemente mit JDOM durch Text ersetzen XML & JSON 2
P JDom nimmt keine Elemente an. XML & JSON 3
J Jdom Elemente lesen XML & JSON 5
P zugriff auf gewuenschte elemente klapp nicht. XML & JSON 3
T Einfach nur die Elemente einer XML Datei auslesen :( XML & JSON 10
T Elemente aus XML-File löschen (JDom) XML & JSON 9
G Xml Elemente in eine Liste abspeichern! XML & JSON 2
G Elemente in XML XML & JSON 4
G brauche Tips, wie ich am besten auf Elemente zugreife XML & JSON 5
D Xml-Datei in JTree anzeigen und Elemente ausblenden XML & JSON 2
S JDOM Elemente suchen XML & JSON 2
A XML-Fehler beim Prefix von xmlns XML & JSON 2
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
P JDOM oder SAX XML & JSON 3
Hijo2006 Grundsätzliches zu JDOM 2.x XML & JSON 1
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S JDom XML ein Element hinzufügen. XML & JSON 1
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
J JDOM XMLOutputter getPrettyFormat() XML & JSON 3
H JDOM setAttribute Reihenfolge XML & JSON 3
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
F Aus XML mit JDOM aus Elementattributen Werte rauslesen XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
T Dom, Jdom, Sax XML & JSON 8
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
Helgon JDOM schreibt nicht XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
G xml, jdom "Entität wurde referenziert aber nicht deklariert." XML & JSON 4
A XSL und JDom XML & JSON 3
G jdom-Klassen in Eclipse importieren XML & JSON 2
S JDOM ohne XML Header erzeugen? XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S JDOM nur Attribut Name XML & JSON 2
X JDom für SOAP Dateien geeignet? XML & JSON 3
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
S jdom hasChildren()? XML & JSON 1
T Frage zu getContent unter jdom XML & JSON 6
Z Tutorial für JDOM (XSD-Shema) XML & JSON 3
D jdom, xml, login-system XML & JSON 4
N JDOM: XML einlesen XML & JSON 4
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
lordcarlos jdom zu iso-8859-15 zwingen XML & JSON 4
P jdom XML-Encoding auslesen XML & JSON 12
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
H Schema-Validierung mit JDOM XML & JSON 2
lordcarlos JDOM und entfernen von children XML & JSON 4
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
S XML, UTF-8, JDOM und Umlaute XML & JSON 3
E XML - JDOM - Bäume: was würdet ihr hier machen? XML & JSON 11
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
T JDOM Bibiliothek XML & JSON 3
K JDOM vs. DOM, Schnittstellen XML & JSON 5
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
0x7F800000 jdom mit xml.transform inkompatibel, was soll ich nehmen? XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
A JDOM und Sonderzeichen < > XML & JSON 17
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
S Jdom+java webstart XML & JSON 4
K html -> cyberneko -> xml -> jdom . XML & JSON 3
I JDom Text ändern XML & JSON 4
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
C XPath in JDOM klappt nicht XML & JSON 2
S Harte Nuss mit XML und JDOM XML & JSON 2
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
B jdom: getChildren() problem XML & JSON 4
T Bild in XML per JDOM XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben