2013-07-08 2 views
0

Мне нужно проверить правильность URL-адреса RSS-канала. У меня есть url, теперь мне нужно проверить этот URL-адрес только для RSS-канала, как я могу проверить это в ядре Java? пожалуйста, помогитеПроверка правильности URL-адреса RSS-канала в Java

+0

У вас нет выбора, кроме как получить доступ к этому URL, чтобы проверить, если это на самом деле RSS канал ... Как проверить свою форму, используйте 'URI'. – fge

+0

да, я думаю, что это только путь – RITUser

ответ

0

Я сделал это простым способом, не знаю, как далеко он встречается, но в моем случае это полезно. Blow - это мой код фрагмента

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document doc = builder.parse(url); // url is your url for testing 
doc.getDocumentElement().getNodeName().equalsIgnoreCase("rss") 

все.

0

Лучший способ заключается в использовании XML Validation для этого: Скачать XSD файл отсюда и поместите его позади вас файл класса: http://europa.eu/rapid/conf/RSS20.xsd

Вы можете использовать XSD с DOM:


private void validate(final File file) throws SAXException, ParserConfigurationException, IOException { 
    final List exceptions = new ArrayList(); 

    final ErrorHandler errorHandler = new ErrorHandler() { 
     public void warning(SAXParseException e) throws SAXException { 
      // we can forgive that! 
     } 

     public void error(SAXParseException e) throws SAXException { 
      exceptions.add(e); 
     } 

     public void fatalError(SAXParseException e) throws SAXException { 
      exceptions.add(e); 
     } 
    }; 

    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    factory.setValidating(false); 
    factory.setNamespaceAware(true); 

    final SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); 
    final Schema schema = schemaFactory.newSchema(getClass().getClassLoader().getResource("Rss20.xsd")); 

    factory.setSchema(schema); 

    final DocumentBuilder builder = factory.newDocumentBuilder(); 

    builder.setErrorHandler(errorHandler); 

    builder.parse(file); 

    if(exceptions.size() == 0) { 
     // no error 
    } else { 
     // Error happens! 
    } 
} 
0

I знаю, что это было 3 года назад), но вот мой код. Используйте библиотеку rome. Using ROME to read a syndication feed

public boolean romeLibraryExample(String address) { 
    boolean ok = false; 
    try{ 
     URL url = new URL(address); 
     HttpURLConnection httpcon = (HttpURLConnection)url.openConnection(); 
     SyndFeedInput input = new SyndFeedInput(); 
     SyndFeed feed = input.build(new XmlReader(url)); 
     ok = true; 
    } catch (Exception exc){ 
     exc.printStackTrace(); 
    } 
    return ok; 
} 
Смежные вопросы