document is invalid: no grammar found.

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich versuche ein XML-Dokument in eine Xindice XML-Datenbank zu bringen.
Ich erhalte folgende Fehlermeldung.

trying to register database
Exception in thread "main" org.jdom.input.JDOMParseException: Error on line 2 of document file:/c:/build.xml: Document is invalid: no grammar found.
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:465)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:810)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:789)
at Xml.Testclass.main(Testclass.java:29)
Caused by: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
... 3 more
Caused by: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:810)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:789)
at Xml.Testclass.main(Testclass.java:29)

Kann mit einer von Euch helfen?

Quellcode liegt bei.

Gruß

Code:
package Xml;
///db/Eladatenssaetze

import org.jdom.input.SAXBuilder;
import org.w3c.dom.Document;
import org.xmldb.api.base.*;
import org.xmldb.api.modules.*;
import org.xmldb.api.*;
import java.io.*;

public class Testclass {

public static void main(String[] args) throws Exception {
  Collection col = null;
  
  try {
    String driver = "org.apache.xindice.client.xmldb.DatabaseImpl";
    Class c = Class.forName(driver);

    Database database = (Database) c.newInstance();
    DatabaseManager.registerDatabase(database);
    col =
      DatabaseManager.getCollection("xmldb:xindice://localhost:8080/db/Eladatenssaetze");

    
    Document doc = null;
   
      SAXBuilder b = new SAXBuilder(true);  // validierenden Parser nutzen
      doc = (Document) b.build(new File("c:\\build.xml"));
    
    
    //String data = readFileFromDisk("c:\\build.xml");

    XMLResource document =
      (XMLResource) col.createResource(null, "XMLResource");
    //document.setContent(data);
    document.setContentAsDOM(doc);
    col.storeResource(document);
    System.out.println("Document " + "c:\\build.xml" + " inserted");
  }
  catch (XMLDBException e) {
    System.err.println("XML:DB Exception occured " + e.errorCode);
  }
  finally {
    if (col != null) {
      col.close();
    }
  }
}
 
S

SlaterB

Gast
hast du denn eine Grammatik (DTD?) vorliegen und im Dokument referenziert?

wenn du das nicht brauchst wieso dann
// validierenden Parser nutzen
 
G

Guest

Gast
Ne habe ich nicht, aber wie soll ich deiner Meinung nach die XML-Datei mit JDOM lesen?

Gruß

Alaska
 
S

SlaterB

Gast
SAXBuilder b = new SAXBuilder(false statt true);
? ;)

ich kenne mich da aber nicht aus
 
G

Guest

Gast
SlaterB hat gesagt.:
SAXBuilder b = new SAXBuilder(false statt true);
? ;)

ich kenne mich da aber nicht aus

Das geht leider nicht.
Ich versuche ja ein XML-Dokument in eine Xindice Datenbank zu schreiben. Ich habe es schon geschafft, aber nur durch Bitweise auslesen der XML-Datei, dieses möchte ich aber verhindern ujnd es über JDom versuchen, kann mir da einer weiterhelfen.
 
S

SlaterB

Gast
> Das geht leider nicht.

kannst du das der Interesse halber näher erläutern?
wieso gibts denn dann einen boolean-Parameter ;) ,
was sind die Fehler?

wenn ich hier nur störe, sag Bescheid ;)
 
G

Guest

Gast
Wieso solltest Du stören?


Hier der Codeausschnitt, den es betrifft.
Code:
Document doc = null;
    
    SAXBuilder b = new SAXBuilder(false);  // validierenden Parser nutzen
    doc = (Document) b.build(new File("c:\\build.xml")); 
    
    //String data = readFileFromDisk("c:\\build.xml");
    
        XMLResource document =
      (XMLResource) col.createResource(null, "XMLResource");
    document.setContentAsDOM((Node) doc);
   // document.setContentAsDOM(doc);
    col.storeResource(document);


Ich erhalte folgende Meldung.

Exception in thread "main" java.lang.ClassCastException: org.jdom.Document cannot be cast to org.w3c.dom.Node
at Xml.Testclass.main(Testclass.java:36)


Gruß
 
G

Guest

Gast
Dein Problem liegt darin, das org.w3c.dom.Document != org.jdom.Document

Die Zeile:
Code:
Document doc = null;
SAXBuilder b = new SAXBuilder(false);
doc = b.build(new File("c:\\build.xml"));
Erzeugt die ein JDom Document, aber bei
Code:
XMLResource xmlResource =
      (XMLResource) col.createResource(null, "XMLResource");
xmlResource.setContentAsDOM(doc);
braeuchtest du ein W3C Document.

Wenn Du das erste in das zweite umwandeln willst, kannst Du

Code:
import org.jdom.output.DOMOutputter;
import org.jdom.input.SAXBuilder;

org.jdom.Document jDomDoc = ((new) SAXBuilder(false)).build(new File("c:\\build.xml"));
DOMOutputter outputter = new DOMOutputter() ;
org.w3c.dom.Document w3cDoc = outputter.output(jDomDoc);
verwenden.

Du hast aber in dem Moment das JDOM Framework eigentlich nicht wirklich genutzt, es ist fuer deine Zwecke ein unnoetiger Zwischenschritt und Du kannst gleich einen konventionellen XML Parser (z.B. Xerces) verwenden.
 
G

Guest

Gast
So das hat ja so wunderbar geklappt.
Jetzt habe ich nur ein Problem.
Die Datensaetze stehen mit folgenden Namen in der Datenbank.


14f4a7c07c4dac8d00000111b6165bcc

Aber ich möchte das der Name der Datei dort erscheint, in meinem Fall build.xml.

Was muss ich dafür tun?


Gruß
 

kleiner_held

Top Contributor
Laut API Doc von xmldb kann man bei
Code:
col.createResource(null, "XMLResource");
anstatt null eine vordefinierte ID vergeben. Dabei muss man natuerlich dann selber sicherstellen, dass die gleiche ID nicht mehrmals verwendet wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S XML Document Parsen und Ausgeben mit Suchfunktion XML & JSON 21
L XML Document Transform StackOverflowError XML & JSON 1
B Wie kann man das ecncoding in einem vorhandenen Document-Objekt ändern? XML & JSON 2
M java.lang.RuntimeException: Failed to parse document XML & JSON 4
sylo DOM Document in XML Datei schreiben XML & JSON 5
sambalmueslie JAXB - Unmarshall ein XML-Document das aus zwei XSD Definitionen besteht XML & JSON 8
L invalide xml document parsen?! XML & JSON 2
G Nodes in Document kopieren, nur die Childs, die noch nicht existieren XML & JSON 7
K Document null bei builder.parse XML & JSON 2
B jdom document aus string erzeugen? XML & JSON 1
M Wie kann ich aus ein Document-Tree ein PDF generieren XML & JSON 2
G Ein DOM-Document dem Sax übergeben? XML & JSON 2
S org.jdom.document in String umwandeln. XML & JSON 2
P Aus einem Node ein Document erstellen XML & JSON 2
R XML Document als String XML & JSON 2
C Kompliziertes XML-Document, wie lese ich es ein? XML & JSON 4
N FileStream auf Document XML & JSON 22
M XPath Problem im Zusammenhang mit document() XML & JSON 2
B XML-Document mit Java erzeugen und zuruecksenden XML & JSON 1
W XML-Document auslesen XML & JSON 2
M dom4j unberechtigte Invalid XPath expression XML & JSON 12
Shoox Validator get invalid Nodename XML & JSON 6

Ähnliche Java Themen

Neue Themen


Oben