3

我需要编写一个 java 应用程序,在标签和许多 xml 文件的实际数据中进行关键字搜索。根据我的在线研究,我觉得我必须使用 xalan,但我不知道如何使用它或它的作用。有人能指出我正确的方向吗?谢谢

4

4 回答 4

2

您需要做的第一件事是确定您实际要搜索的数据。您说“在标签和实际数据内”——这是否意味着您将对元素名称进行关键字搜索?还是其中的元素名称和内容?

根据您的搜索查询的复杂程度,您可能希望求助于真正的搜索引擎,例如Lucene。但是,我要说的是,在您执行此步骤之前,您需要对计划如何搜索进行大量考虑,以便建立适当的索引。

如果您的搜索要求更简单,您可以将文档加载到 DOM 中并使用XPath。我建议在迁移到 Lucene 之前尝试一下。

你不需要 Xalan;JDK 带有 XML 解析器和 XPath 评估器。我写了几篇关于使用它们的文章:(解析),(xpath)。

于 2010-01-16T14:54:43.310 回答
2

Xalan是一个XSLT处理器:它使您能够编写一个 XSL 样式表,将您的源 XML 文档转换成其他东西。

当然可以编写一个 XSL 转换,然后您搜索转换的结果。

另一种选择是使用 XML 解析器解析文档,然后使用Lucene:请参阅使用 Digester 和 Lucene 解析、索引和搜索 XML 文档

您可能还想使用XPath。这完全取决于您想要实现的目标。

于 2010-01-16T14:55:24.503 回答
0

听起来您正在寻找 Java 的 XPath 实现。这允许您构造一个搜索表达式并将其应用于一个或多个 XML 文档(通常必须已经过解析)。Xalan 是一种选择,但还有其他选择。从 Java 5 开始的 Java 版本包括 XML 解析和 XPath 功能。如果您使用的是最新版本的 Java,并且想要简单地解析和搜索一组 XML 文档,那么您可能不需要 Java SDK 之外的任何东西。

有关“开箱即用”的 XPath 功能的良好(但有些过时)概述,请参阅本文:http: //www.ibm.com/developerworks/library/x-javaxpathapi.html

于 2010-01-16T14:51:37.140 回答
0

请参阅这篇关于如何使用XPath 函数进行搜索的SO 帖子。contains()

至于如何进行 XPath 查询的示例,我建议查看Java XPath 文档。这是他们提供的示例代码:

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/widgets/widget";
InputSource inputSource = new InputSource("widgets.xml");
NodeSet nodes = (NodeSet) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);

这将加载文件widgets.xml并返回NodeSet匹配表达式的所有节点。

于 2010-01-16T14:54:13.203 回答