Exception in thread “main” java.net.MalformedURLException: protocole inconnu: c
Je suis en train d'utiliser un Parser SAX pour parser un fichier XML. Bien que je reçois l'erreur ci-dessous dans mon code:
Exception in thread "main" java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(URL.java:592)
at java.net.URL.<init>(URL.java:482)
at java.net.URL.<init>(URL.java:431)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:605)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:799)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1137)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:580)
at main.main(main.java:28)
Java Result: 1
Voici Ma Classe de gestionnaire:
public class MySaxParser extends DefaultHandler {
Index i = new Index(12);
String bookxmlfilename;
String tmpValue;
BookCitation c;
JournalArticle j;
Unpublished u;
ConfProceedings p;
public MySaxParser() {
}
@Override
public void startElement(String s, String s1, String elementName, Attributes attr) throws SAXException {
if (elementName.equalsIgnoreCase("JournalArticle")) {
if (elementName.equalsIgnoreCase("Pages")) {
j.setstartPage(Integer.parseInt(attr.getValue("StartPage")));
j.setendPage(Integer.parseInt(attr.getValue("EndPage")));
}
}
if (elementName.equalsIgnoreCase("ConferenceProceedings")) {
if (elementName.equalsIgnoreCase("Pages")) {
p.setstartPage(Integer.parseInt(attr.getValue("StartPage")));
p.setendPage(Integer.parseInt(attr.getValue("EndPage")));
}
}
}
@Override
public void endElement(String s, String s1, String element) throws SAXException {
if (element.equalsIgnoreCase("book")) {
i.addCitation(c);
if (element.equalsIgnoreCase("name")) {
c.setName(tmpValue);
}
if (element.equalsIgnoreCase("publisher")) {
c.setpublisher(tmpValue);
}
if (element.equalsIgnoreCase("publicationDate")) {
c.setdateOfPublication(tmpValue);
}
if (element.equalsIgnoreCase("authors")) {
if (element.equalsIgnoreCase("author")) {
c.addAuthor(tmpValue);
}
}
if (element.equalsIgnoreCase("keywords")) {
if (element.equalsIgnoreCase("keyword")) {
c.addKeyword(tmpValue);
}
}
}
if (element.equalsIgnoreCase("JournalArticle")) {
i.addCitation(j);
if (element.equalsIgnoreCase("name")) {
j.setName(tmpValue);
}
if (element.equalsIgnoreCase("TitleOfJournal")) {
j.settitleOfJournal(tmpValue);
}
if (element.equalsIgnoreCase("TitleOfJournal")) {
j.settitleOfJournal(tmpValue);
}
if (element.equalsIgnoreCase("PublicationDate")) {
j.setpublicationDate(tmpValue);
}
if (element.equalsIgnoreCase("volNumber")) {
j.setvolNumber(Integer.parseInt(tmpValue));
}
if (element.equalsIgnoreCase("IssueNumber")) {
j.setissueNumber(Integer.parseInt(tmpValue));
}
if (element.equalsIgnoreCase("authors")) {
if (element.equalsIgnoreCase("author")) {
j.addAuthor(tmpValue);
}
if (element.equalsIgnoreCase("keywords")) {
if (element.equalsIgnoreCase("keyword")) {
j.addKeyword(tmpValue);
}
}
}
}
if (element.equalsIgnoreCase("Unpublished")) {
i.addCitation(u);
if (element.equalsIgnoreCase("name")) {
u.setName(tmpValue);
}
if (element.equalsIgnoreCase("authors")) {
if (element.equalsIgnoreCase("author")) {
u.addAuthor(tmpValue);
}
if (element.equalsIgnoreCase("keywords")) {
if (element.equalsIgnoreCase("keyword")) {
u.addKeyword(tmpValue);
}
}
}
}
if (element.equalsIgnoreCase("ConferenceProceedings")) {
i.addCitation(p);
if (element.equalsIgnoreCase("name")) {
p.setName(tmpValue);
}
if (element.equalsIgnoreCase("publisher")) {
p.setpublisher(tmpValue);
}
if (element.equalsIgnoreCase("ConferenceLocation")) {
p.setlocationOfConference(tmpValue);
}
if (element.equalsIgnoreCase("TitleOfConferenceproceeding")) {
p.settitleOfConferenceProc(tmpValue);
}
if (element.equalsIgnoreCase("ConferenceYea")) {
p.setconfYear(Integer.parseInt(tmpValue));
}
if (element.equalsIgnoreCase("Editor")) {
p.seteditor(tmpValue);
}
if (element.equalsIgnoreCase("authors")) {
if (element.equalsIgnoreCase("author")) {
p.addAuthor(tmpValue);
}
if (element.equalsIgnoreCase("keywords")) {
if (element.equalsIgnoreCase("keyword")) {
p.addKeyword(tmpValue);
}
}
}
}
if (element.equalsIgnoreCase("FormattingStyle")) {
i.setFormatType("IEEE");
}
if (element.equalsIgnoreCase("FormattingStyle")) {
try {
i.formatIEEE(tmpValue);
} catch (IOException ex) {
Logger.getLogger(MySaxParser.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@Override
public void characters(char[] ac, int i, int j) throws SAXException {
tmpValue = new String(ac, i, j);
}
}
Ici est ma classe principale:
public class main {
public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
//Create scanner
Scanner OswegoNote = new Scanner(System.in);
//Create a parser factory
SAXParserFactory factory = SAXParserFactory.newInstance();
//Make the parser
SAXParser saxParser = factory.newSAXParser();
XMLReader parser = saxParser.getXMLReader();
//Create a handler
MySaxParser handler = new MySaxParser();
//Tell the parser to use this handler
parser.setContentHandler(handler);
//read and parse the document
parser.parse("C:\\Users\\mhromalik\\Documents\\Suny Oswego\\fall2013\\csc241fall2012\\Assignment\\MyCitation.html");
}
}
Et voici une partie de mon fichier XML:
<Citation>
<ConferenceProceedings>
<Name>An efficient implementation of Smith Waterman algorithm on GPU using CUDA, for massively parallel scanning of sequence databases</Name>
<Publisher>Parallel and Distributed Processing</Publisher>
<ConferenceLocation>Austin,TX</ConferenceLocation>
<TitleOfConferenceproceeding> IEEE International Conference on Parallel and Distributed Processing</TitleOfConferenceproceeding>
<ConferenceYear>2009</ConferenceYear>
<Editor>S. M. Mann</Editor>
<Pages StartPage="85" EndPage="102"/>
<Authors>
<author>L. L. Ligowski</author>
<author>W. A. Rudnicki</author>
</Authors>
<Keywords>
<Keyword>Sparse Data</Keyword>
<Keyword>DNA</Keyword>
<Keyword>GPU</Keyword>
<Keyword>Data Mining</Keyword>
</Keywords>
</ConferenceProceedings>
</Citation>
<FormattingStyle>IEEE</FormattingStyle>
<FilePath>C:\\Users\\mhromalik\\Documents\\Suny Oswego\\fall2013\\csc241fall2012\\Assignment\\MyCitation.html</FilePath>
</Index>
Je ne peux pas comprendre pourquoi cette erreur se produit. Toute aide serait grandement appréciée!
OriginalL'auteur James | 2014-10-23
Vous devez vous connecter pour publier un commentaire.
Il vous manque le protocole lorsque vous définissez le chemin d'accès de votre fichier html. Comme vous essayez de lire un fichier html local, vous pouvez utiliser
file
protocole:OriginalL'auteur Juned Ahsan
de l'analyseur.parse() s'attend à une URI, pas un nom de fichier. Vous pouvez obtenir à partir d'un nom de fichier à un URI en Java à l'aide de
OriginalL'auteur Michael Kay