【发布时间】:2023-04-05 20:29:02
【问题描述】:
我需要编写一个 java 应用程序,在标签和来自许多 xml 文件的实际数据中进行关键字搜索。根据我的在线研究,我觉得我必须使用 xalan,但我不知道如何使用它或它的作用。有人能指出我正确的方向吗?谢谢
【问题讨论】:
我需要编写一个 java 应用程序,在标签和来自许多 xml 文件的实际数据中进行关键字搜索。根据我的在线研究,我觉得我必须使用 xalan,但我不知道如何使用它或它的作用。有人能指出我正确的方向吗?谢谢
【问题讨论】:
Xalan 是一个XSLT 处理器:它使您能够编写一个 XSL 样式表,将您的源 XML 文档转换成其他东西。
当然可以写一个 XSL 转换然后你搜索转换的结果。
另一种选择是使用 XML 解析器解析文档,然后使用 Lucene:参见 Parsing, indexing, and searching XML documents with Digester and Lucene。
您可能还想使用XPath。这完全取决于您想要实现的目标。
【讨论】:
听起来您正在寻找 Java 的 XPath 实现。这允许您构造一个搜索表达式并将其应用到一个或多个 XML 文档(通常必须已经过解析)。 Xalan 是一种选择,但还有其他选择。从 Java 5 开始的 Java 版本包括 XML 解析和 XPath 功能。如果您使用的是最新版本的 Java,并且想简单地解析和搜索一组 XML 文档,那么您可能不需要 Java SDK。
有关“开箱即用”的 XPath 功能的良好(但有些过时)概述,请参阅本文:http://www.ibm.com/developerworks/library/x-javaxpathapi.html
【讨论】:
请参阅this SO post,了解如何使用contains() XPath 函数进行搜索。
关于如何进行 XPath 查询的示例,我建议查看 Java XPath documentation。这是他们提供的示例代码:
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。
【讨论】: