/**
* 执行查询
* @throws FileNotFoundException
*/
public static void select() throws FileNotFoundException {
//文件
String fileString = "src/com/farmer/city.xml";
//CATALOG元素(根元素)下的 CD 元素下的所有 title 元素,并以字母顺序返回 title 元素
// String query = "for $s in //CD/TITLE" +
// " order by $s " +
// "return $s";
// HTML 表现出来
String query = "<ul>" +
"{"+
"for $s in //city/id" +
" order by $s " +
//这个还是带TILTLE标签的 下面一个不带"return <li>{$s}</li>" +
"return <li>{data($s)}</li>" +
"}" +
"</ul>";
// 查询语句
//String query = " for $s in /CATALOG/CD/PRICE" + " return $s";
//并且所选取的 CD 元素下的 price 元素的值必须等于 10.90:
//String query = " for $s in /CATALOG/CD[PRICE=10.90]/PRICE " + " return $s";
//下面这个表达式可选取 CATALOG 元素下的 CD 元素下所有的 TITLE 元素,并且其中的 PRICE 元素的值必须大于 10.90
//String query = " for $s in /CATALOG/CD[PRICE=10.90]/TITLE " + " return $s";
// 生产文档对象
Document document = getDocument(fileString);
Configuration configuration = new Configuration();
StaticQueryContext context = new StaticQueryContext(configuration,
false);
// 查询表达式对象
XQueryExpression expression = null;
try {
expression = context.compileQuery(query);
DynamicQueryContext context2 = new DynamicQueryContext(
configuration);
context2.setContextItem(new DocumentWrapper(document, null,
configuration));
final Properties props = new Properties();
props.setProperty(OutputKeys.METHOD, "xml");
//缩进
props.setProperty(OutputKeys.INDENT, "yes");
// 执行查询,并输出查询结果
expression.run(context2, new StreamResult(System.out), props);
} catch (XPathException e) {
e.printStackTrace();
}
}
/**
* 生产文档对象
*
* @param xml
* 文件名
* @return
*/
public static Document getDocument(String xml) {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document document = null;
try {
builder = builderFactory.newDocumentBuilder();
//可以都的是文件流 或 文件地址。即:本地或网络的xml
//document = builder.parse(getStream(xml));
document = builder.parse(xml);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
document.normalize();
return document;
}
public static void main(String[] args) throws Exception {
select();
}
下面是可能会执行出来的结果:
<?xml version="1.0" encoding="UTF-8"?>
<ul>
<li>001</li>
<li>002</li>
<li>003</li>
<li>004</li>
</ul>
参考文档:
http://www.ibm.com/developerworks/cn/xml/x-xjavaxquery/index.html
需要的jar包:saxon9ee.jar (必须要的)
分享到:
相关推荐
XQuery是一种功能强大的...通过阅读和理解这个示例,你将能更好地掌握如何在实际Java项目中应用XQuery。而`data.xml`文件则包含了用于查询的XML数据。确保正确解析和使用这个文件对于理解整个XQuery查询过程至关重要。
通过以上步骤,Java开发者可以利用XQJ轻松地在Java应用程序中解析和处理XML数据,无论是从XML文件、数据库还是其他XML源获取数据。XQJ的出现使得Java与XML的结合更加紧密,为处理XML数据提供了强大而灵活的工具。
3. **XQuery处理**:Saxon的XQuery支持使得在Java环境中执行XQuery变得简单。通过`StaticQueryContext`编译查询,`DynamicQueryContext`执行查询,可以获取查询结果,这些结果可以是XML节点、数值、字符串等。 4. *...
【XQuery技术详解及其在开发mashup中的应用】 XQuery是一种由万维网联盟(W3C)制定的标准,专为从XML文档中提取和处理信息而设计。相较于传统的面向对象编程模型,如Java的Document Object Model(DOM)API,...
例如,在Java环境中,可以通过XQJ API(XQuery for Java)将XQuery集成到Java应用程序中,从而实现在Java程序中直接执行XQuery查询的功能。XQJ API类似于JDBC API,提供了创建和执行XQuery查询的方法,使得开发者...
在实际应用中,XQEngine可以被集成到任何Java应用程序中,作为XML数据处理的后端。例如,在Web应用中,可以用来动态检索数据库中的XML数据;在企业级系统中,可以用于集成来自不同系统的XML格式的数据;在数据分析...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在数据交换、配置文件、文档存储等领域。这篇笔记将围绕XML的解析方法,重点讨论DOM、XPath和XQuery这三种解析技术。 **DOM(Document Object...
这使得开发者可以在Java应用程序中方便地利用XQuery的强大功能。 学习XQuery教程时,你将接触到以下几个关键知识点: 1. **基础语法**:了解如何定义变量、表达式和函数,以及如何使用XQuery的内置函数进行字符串...
【Java理论与实践:用XQuery进行屏幕搜集】这篇文章探讨了如何利用XQuery技术解决智能手机在有限屏幕空间上浏览Web页面的问题。XQuery是一种W3C标准,主要用于从XML文档中提取信息,但它也能应用于HTML的屏幕搜集和...
在本文中,我们将深入探讨如何使用Spring Boot、JSP(JavaServer Pages)和XQuery来实现一个登录认证系统。Spring Boot是Spring框架的简化版本,它使得开发微服务和独立应用变得更加简单。JSP是一种用于创建动态网页...
Java 与XML是两种在软件开发中广泛应用的技术。XML(eXtensible Markup Language)是一种用于标记数据的语言,常用于存储和传输结构化数据。Java则是一种强大的、跨平台的编程语言,它提供了丰富的API来处理XML文档...
- 命名空间在XQuery中的作用和处理方法。 #### 四、表达式详解 - **3.1 表达式种类** - 不同类型的表达式,如路径表达式、FLWOR表达式等。 - **3.2 关键字和名称** - XQuery的关键字和名称规则。 - **3.3 查询中...
在实际应用中,maven-xquery-merger插件常常与其他Maven插件如maven-resources-plugin(资源复制)、maven-surefire-plugin(单元测试)等配合使用,形成完整的构建流程。这不仅简化了XML数据处理项目的构建过程,也...
9. **EJB(Enterprise JavaBeans)**:在企业级Java应用中,XML用于配置EJB组件,如 ejb-jar.xml 和 web.xml 文件。 10. **集成开发环境(IDE)**:诸如Eclipse和IntelliJ IDEA等Java IDE也支持XML,提供语法高亮、...
《Java XML编程指南》是一本面向Java开发人员的实用教程,旨在帮助读者深入理解XML(eXtensible Markup Language)在Java环境中的应用。XML作为一种数据交换格式,因其灵活性和可扩展性,广泛用于Web服务、配置文件...
**EJB(Enterprise JavaBeans)**:EJB是Java EE的一部分,它提供了一种标准的组件模型,用于在分布式环境中构建可扩展的、安全的和事务性的企业级应用。EJB有三种主要类型:会话bean(Session Beans)处理客户端...
描述中的论文介绍了一种集成的数据库架构,它支持既有SQL应用程序使用XML扩展,也有独立运行的XQuery应用程序共同处理同一数据集。这种架构的关键在于它能够平滑地在关系型数据和XML数据之间进行转换,确保了数据...
在提高JAVA水平的过程中,首先需要深入理解JAVA的基础与核心概念。这包括但不限于面向对象编程(OOP)的基本原则、类与对象的设计、封装、继承、多态等核心特性。此外,对于异常处理、线程管理、集合框架等高级主题...