Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java访问web,命令行参数?_Java_Xml - Fatal编程技术网

用Java访问web,命令行参数?

用Java访问web,命令行参数?,java,xml,Java,Xml,我编写了一个程序,读入一个文件对象(实际上是一个XML文件)来解析我想要的信息。我有一个示例程序,基本上就是从网上转储数据(下面的程序显示一个网页)。我想在访问web时使用下面的代码,使用命令行使用当前的xml解析器解析数据。就像我做了一样 java xmlParser http://www.engadget.com/rss.xml 然后程序将解析该提要,并以一种好的格式显示我想要的字段。首先,这是可以接受的吗?我在通过命令行而不是下面的命令行打开网页时遇到了问题 第二,我如何从网络获取这个提

我编写了一个程序,读入一个文件对象(实际上是一个XML文件)来解析我想要的信息。我有一个示例程序,基本上就是从网上转储数据(下面的程序显示一个网页)。我想在访问web时使用下面的代码,使用命令行使用当前的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)
  }
}