【问题标题】:How to extract data from a lot of URLs?如何从大量 URL 中提取数据?
【发布时间】:2013-03-12 12:11:52
【问题描述】:

我有大约 3200 个小 XML 文件的 URL,这些文件包含一些字符串形式的数据(显然)。当我转到 URL 时,会显示(未下载)XML 文件。所以我需要从所有这些 XML 中提取一些数据并将其保存在单个 .txt 文件或 XML 文件或其他文件中。我怎样才能使这个过程自动化?

*注意:这是文件的样子。我需要从所有这些中复制“位置”和“标题”并将它们放在一个文件中。使用什么方法可以实现?

<?xml version="1.0"?>
 -<playlist xmlns="http://xspf.org/ns/0/" version="1">
    -<tracklist>
    <location>http://radiotool.com/fransn.mp3</location> 
    <title>France, Paris radio 104.5</title> 
    </tracklist>
</playlist>

*编辑:固定 XML。

【问题讨论】:

  • 我还不知道如何处理这个问题..
  • 届时我们将无法为您提供帮助。您是否注意到您的 XML 无效?
  • 这不是一个有效的 XML,没有根元素。第一行还有语法错误,?&gt; 应该在行尾
  • 我只需要知道有没有什么办法可以做到这一点?
  • 看起来很像这个问题:stackoverflow.com/questions/2310139/…

标签: java xml url automation


【解决方案1】:

使用 XQuery 或 XSLT 很容易,但细节取决于 URL 的保存方式。如果它们在 Java 列表中,那么(至少在 Saxon 中)您可以将此列表作为参数提供给以下查询:

declare variable urls as xs:string* external;
<data>{
  for $u in $urls return doc($u)//*:tracklist
}</data>

Java 代码类似于:

Processor proc = new Processor();
XQueryCompiler c = proc.newXQueryCompiler();
XQueryEvaluator q = c.compile($query).load();
List<XdmItem> urls = new ArrayList();
for (url : inputUrls) {
  urls.append(new XdmAtomicValue(url);
}
q.setExternalVariable(new QName("urls"), new XdmValue(urls));
q.setDestination(...)
run();

【讨论】:

  • URL 可以从 for 循环中获取,它们采用如下数字模式:www.abcd.1.xml; www.abcd.2.xml 等到 www.abcd.3200.xml。
  • 这很容易,因为您可以使用查询算法生成它们。
【解决方案2】:

在这里查看 JSoup 库:http://jsoup.org/

它具有拉取和修复 URL 内容的功能,不过它是为 HTML 设计的,所以我不确定它是否适合 XML,但值得一看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-10
    • 2010-11-16
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多