我需要编写一个java应用程序,在标记中执行关键字搜索,并从许多xml文件中执行实际数据。从我在网上的研究中我感觉我必须使用xalan,但我无法弄清楚如何使用它或它做什么。有人能指出我正确的方向吗?感谢
答案 0 :(得分:2)
您需要做的第一件事是确定您实际要搜索的数据。您说“在标签和实际数据中” - 这是否意味着您将对元素名称进行关键字搜索?或者其中的元素名称和内容?
根据搜索查询的复杂程度,您可能希望转向真实的搜索引擎,例如Lucene。但是,我会说,在你采取这一步骤之前,你需要考虑如何计划搜索,以便建立一个合适的索引。
如果您的搜索要求更简单,您可以将文档加载到DOM中并使用XPath。我建议在搬到Lucene之前尝试一下。
你不需要Xalan; JDK附带XML解析器和XPath评估器。我写了几篇关于使用它们的文章:(parsing),(xpath)。
答案 1 :(得分:2)
Xalan是一个XSLT处理器:它使您能够编写一个XSL样式表,将您的源XML文档转换为其他内容。
当然可以写一个XSL转换,然后搜索转换的结果。
另一个选择是使用XML解析器解析文档,然后使用Lucene:请参阅Parsing, indexing, and searching XML documents with Digester and Lucene。
您可能还想使用XPath。这完全取决于你想要达到的目的。
答案 2 :(得分:0)
我听起来你正在寻找Java的XPath实现。这允许您构造搜索表达式并将其应用于一个或多个XML文档(通常必须已经解析)。 Xalan是一种选择,但还有其他选择。从Java 5开始的Java版本包括XML解析和XPath功能。如果您使用的是最新版本的Java,并希望简单地解析和搜索一组XML文档,那么除了Java SDK之外,您可能不需要任何其他内容。
请参阅此文章,了解“开箱即用”的XPath功能({3}}
答案 3 :(得分:0)
有关如何使用contains()
XPath函数进行搜索,请参阅this SO post。
关于如何进行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
。