Announcement

Collapse
No announcement yet.

xincluder

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • xincluder

    Hallo zusammen!

    Ich will die API xincluder (http://xincluder.sourceforge.net/) verwenden, um mit JAXB eine XML-Datei einlesen zu können, die include-Tags enthält.

    Dazu habe ich das folgende Beispiel in einem anderen Forum gefunden:
    http://weblogs.java.net/blog/kohsuke/archive/2006/01/xinclude_and_ja.html

    Die Idee dieser API ist es, einen Filter vorzuschalten, der das include auflöst.

    Aber ich bekomme eine Exception mit der Meldung "Unrecognized SYSTEM ID: null".
    Intern wird vom Filter die Methode setDocumentLocator(Locator) aufgerufen, die den Locator auswerten will, aber scheinbar null uebergeben bekommt.

    Hier der Stack Trace:
    <pre>
    java.lang.UnsupportedOperationException: Unrecognized SYSTEM ID: null
    at com.elharo.xml.xinclude.XIncludeFilter.setDocument Locator(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.startD ocument(Unknown Source)
    at org.apache.xerces.impl.dtd.XMLDTDValidator.startDo cument(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl.star tEntity(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.startDoc umentParsing(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse (Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(U nknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse( Unknown Source)
    at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterI mpl.java:371)
    </pre>

    Hat jemand eine Idee, wie ich das hinbekomme? Bin für jeden Hinweis dankbar.

    Schon mal vielen Dank im voraus!
    Stefan

  • #2
    Wie schauts denn mal mit einem Beispielprogramm aus? Was hast du denn für ein OS? Wie soll man dir denn so helfen

    Comment


    • #3
      Entschuldige Christian,
      Du hast natürlich recht, ich hätte besser auch einen Code-Ausschnitt beifügen sollen.
      Ich hatte es genau so versucht, wie es unter genanntem Link zu finden ist.
      Aber das Problem hat sich inzwischen erledigt.

      Was man wissen muß: Man muß die SystemId, die auf die einzulesende Datei verweist, (richtig) setzen - und zwar erwartet die xinclude-API eine SystemId in Form einer URL!!!

      z.B.:

      <pre>
      XIncludeFilter includeFilter = new XIncludeFilter();
      includeFilter.setParent(xmlReader);
      includeFilter.setContentHandler(unmaHandler);

      InputSource is = new InputSource(is);
      URL url = new URL(protocol, host, file);
      is.setSystemId(url.toExternalForm());
      SAXSource source = new SAXSource(includeFilter, isSource);
      </pre&gt

      Comment

      Working...
      X