【问题标题】:How to Query two XML files simultaneously in Java?如何在 Java 中同时查询两个 XML 文件?
【发布时间】:2012-09-26 19:10:28
【问题描述】:

在我的场景中,我有两个 XML 文件,我想同时查询这些文件。

文件 1,publishers.xml

<publishers>
    <publisher pubid="1" name="ABC" />
    <publisher pubid="2" name="RST" />
    <publisher pubid="3" name="XYZ" />
</publishers>

文件 2,books.xml

<books>
    <book bkid="1" pubid="1" name="introduction to A" />
    <book bkid="2" pubid="3" name="introduction to B" />
    <book bkid="3" pubid="3" name="introduction to C" />
    <book bkid="4" pubid="2" name="introduction to D" />
</books>

问题:

  • Java/Android 中是否有任何可用的 XML 查询(类似于 LINQ)?
  • IN JAVA,我该怎么做? (我想同时从两个 XML 文件中查询)

    SELECT book FROM books.xml JOIN publishers.xml ON publishers.pubid = books.pubid AND bkid = "2"

让我用“简单的”英文解释:),节点&lt;book&gt;是从books.xml中选择的,属性bkid=2,同时&lt;publisher&gt;从publishers.xml文件中选择publishers.pubid=books.pubid

期望的输出(已处理):

Book ID: 2
Book Name: introduction to B
Publisher: XYZ

谢谢!

【问题讨论】:

  • 可以使用Xpath查询xml,见:developer.android.com/reference/javax/xml/xpath/…
  • 谢谢阿尼斯!我在网上看到的所有示例都处理一个 xml 文件。就我而言,我需要有条件地读取两个 xml 文件。
  • 这个问题是不是太难了?我尽力解释这个场景。 :)
  • 看看这个问题收到的回复以及关于这个主题的很少的材料和讨论,我在想这种方法有什么问题吗?人们不使用两个 XML 文件吗?如果是,如何?

标签: java android xml-parsing android-xml


【解决方案1】:

这很常见吗?不,不是,但有时是必要的。我会按照StackOverflow answer 中的描述使用 Xquery。当然,如果您可以合并文件,它将简化您的问题。

-- 编辑--

由于 Xquery 在 Android 上似乎没有非常可靠的支持,我会考虑一个不同的选择:

  1. 将文件合并在一起:您可以将两个流拉下来,将它们连接到新的父节点&lt;root&gt; xml files concat here &lt;/root&gt; 中,然后将此字符串转换为 dom 文档并使用 xpath 解析它。

【讨论】:

  • 我通读了教程和 API,最后发现它在 Android 上不可用。
  • 感谢贾斯汀的链接,我已经非常彻底地浏览了该链接。我无法下载此页面上列出的 jar 文件(超时错误)。没有可用的支持,这个库周围没有发生任何事情..不知道是否值得冒险并下载源代码。似乎也没有人在 Stackoverflow 上谈论它。
  • 这太糟糕了,它看起来像是某人的高级项目,但它有潜力。请参阅我的编辑以获取另一种可能的解决方案。您使用的数据听起来相当静态,您是否考虑过将其拉下并将其缓存在 sqlite 中,以便您可以轻松地以任何方式查询它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2010-10-13
相关资源
最近更新 更多