我需要检查 RSS 提要 URL 验证。我有一个 url,现在我需要检查这个 url 是否仅用于 RSS 提要,我如何在核心 java 中检查它?请帮忙
问问题
1946 次
3 回答
1
我知道那是 3 年前),但这是我的代码。使用罗马图书馆。 使用 ROME 读取联合提要
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;
}
于 2016-11-16T13:53:16.953 回答
0
最好的方法是使用 XML 验证:从这里下载 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!
}
}
于 2013-10-04T09:22:19.537 回答
0
我以一种简单的方式做到了,不知道它能达到多远,但在我的情况下它是有帮助的。贝娄是我的代码片段
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(url); // url is your url for testing
doc.getDocumentElement().getNodeName().equalsIgnoreCase("rss")
而已。
于 2013-07-10T05:46:17.477 回答