Hello,
I can't seem to get the following to work:
I have the following code:
==========
MyParser.java
==========
package parser;
import org.jdom.input.SAXBuilder;
import org.jdom.Document;
public class MyParser{
public void startFileParsing(String filename){
Document document;
SAXBuilder builder = new SAXBuilder();
builder.setEntityResolver(new MyEntityResolver());
try {
document = builder.build(file);
} catch (JDOMException e) {
e.printStacktrace();
}
}
public static void main(String[] args) {
MyParser mp = new MyParser();
mp.startFileParsing(args[0]);
}
}
==========
MyEntityResolver.java
==========
package parser;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
public class MyEntityResolver implements EntityResolver {
public NTFREntityResolver() {
}
public InputSource resolveEntity(String publicId, String systemId) {
return new InputSource(this.getClass().getClassLoader().getResource("MyDTD.dtd").toString());
}
}
==========
MyXML.xml
==========
<?xml version='1.0' encoding='ISO-8859-1'?>
<ROOT>
<ART>
<AL>Hé</AL>
</ART>
</ROOT>
==========
MyDTD.dtd (Placed in the bin-directory)
==========
<?xml version="1.0" encoding="UTF-8"?>
...
<!ENTITY % ISOLAT1 SYSTEM "ISOlat1.ent">
%ISOLAT1;
==========
ISOlat1.ent (Placed in the bin-directory)
==========
<!ENTITY eacute "é" ><!-- small e, acute accent -->
==========
Error message
==========
org.jdom.JDOMException: Error on line 4 of document file:/C:/MyXML.xml: The entity "eacute" was referenced, but not declared.
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:296)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:617)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:599)
at parser.MyParser.startFileParsing(MyParser.java:15)
at parser.MyParser.main(NTFRParser.java:24)
Root cause: org.xml.sax.SAXParseException: The entity "eacute" was referenced, but not declared.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:287)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:617)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:599)
at parser.MyParser.startFileParsing(MyParser.java:15)
at parser.MyParser.main(MyParser.java:24)
at parser.MyParser.startFileParsing(MyParser.java:15)
at parser.MyParser.main(MyParser.java:24)
Exception in thread "main"
And when I use MyXML2.xml:
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE MYDT PUBLIC "-//MyDT//DTD MYDTD-XML//MYDTD" "MyDTD.dtd">
<ROOT>
<ART>
<AL>Hé</AL>
</ART>
</ROOT>
==========
Error message
==========
org.jdom.JDOMException: Error on line 2 of document file:/C:/parser/bin/MyDTD.dtd: Recursive entity reference "%ISOLAT1". (Reference path: %ISOLAT1 -> %ISOLAT1 -> %ISOLAT1),
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:296)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:617)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:599)
at parser.MyParser.startFileParsing(MyParser.java:15)
at parser.MyParser.main(MyParser.java:24)
Root cause: org.xml.sax.SAXParseException: Recursive entity reference "%ISOLAT1". (Reference path: %ISOLAT1 -> %ISOLAT1 -> %ISOLAT1),
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:287)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:617)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:599)
at parser.MyParser.startFileParsing(MyParser.java:15)
at parser.MyParser.main(MyParser.java:24)
at parser.MyParser.startFileParsing(MyParser.java:15)
at parser.MyParser.main(MyParser.java:24)
Exception in thread "main"
Can anybody give me some pointers?