用Java访问web,命令行参数?
我编写了一个程序,读入一个文件对象(实际上是一个XML文件)来解析我想要的信息。我有一个示例程序,基本上就是从网上转储数据(下面的程序显示一个网页)。我想在访问web时使用下面的代码,使用命令行使用当前的xml解析器解析数据。就像我做了一样用Java访问web,命令行参数?,java,xml,Java,Xml,我编写了一个程序,读入一个文件对象(实际上是一个XML文件)来解析我想要的信息。我有一个示例程序,基本上就是从网上转储数据(下面的程序显示一个网页)。我想在访问web时使用下面的代码,使用命令行使用当前的xml解析器解析数据。就像我做了一样 java xmlParser http://www.engadget.com/rss.xml 然后程序将解析该提要,并以一种好的格式显示我想要的字段。首先,这是可以接受的吗?我在通过命令行而不是下面的命令行打开网页时遇到了问题 第二,我如何从网络获取这个提
java xmlParser http://www.engadget.com/rss.xml
然后程序将解析该提要,并以一种好的格式显示我想要的字段。首先,这是可以接受的吗?我在通过命令行而不是下面的命令行打开网页时遇到了问题
第二,我如何从网络获取这个提要并让我的程序解析它,因为它目前只解析一个硬编码的XML文件。虽然这不是一个优雅的解决方案,但我可以看到可能将来自web的数据写入xml文件,并使用xml解析器对其进行解析。有什么想法吗?谢谢
代码:
如果在没有命令行参数的情况下运行程序,则程序运行正常:
jkugelman$ java DumpIO
<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>
<channel>
...
修复这一问题非常简单:
if (args.length > 0) {
url = new URL(args[0]);
}
else {
url = new URL("http://www.engadget.com/rss.xml");
}
至于第二个问题,XML解析器很可能接受
InputStream
s作为输入。获取从url.openStream()
获得的InputStream
,并将其传递给XML阅读器。无需保存到临时文件或任何类似的文件。您可以在Scala中尝试同样的方法。以下是整个程序:
object DumpIO {
def main(a: Array[String]) = {
val url = if (a.size > 0) a(0) else "http://www.engadget.com/rss.xml"
val rss = xml.XML.load(url)
println(rss)
}
}
Scala具有出色的原生XML支持,因此您可以继续使用值“rss”来执行类似xpath的操作、漂亮的打印等
您的Scala程序将编译为标准的.class文件,因此如果需要,您可以使用java命令运行它
if (args.length > 0) {
url = new URL(args[0]);
}
else {
url = new URL("http://www.engadget.com/rss.xml");
}
object DumpIO {
def main(a: Array[String]) = {
val url = if (a.size > 0) a(0) else "http://www.engadget.com/rss.xml"
val rss = xml.XML.load(url)
println(rss)
}
}