XQuery 添加元素
XQuery 添加元素 可用于在输入文档的结果中添加元素、属性、HTML 元素和文本。
让我们通过一个例子来理解它。
XQuery 添加元素示例
取名为 books.xml 的 XML 文件,其中包含以下数据。
<bookstore>
<book category="Mythology">
<title lang="en">Immortals of Meluha</title>
<author>Amish</author>
<year>2010</year>
<price>180</price>
</book>
<book category="Children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>300</price>
</book>
<book category="Programming">
<title lang="en">Let's C</title>
<author>Yashwant Kanetkar</author>
<year>2003</year>
<price>200</price>
</book>
</bookstore>
XQuery 表达式
books.xqy
for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
编写解析程序
package com.yiidian;
import com.saxonica.xqj.SaxonXQDataSource;
import javax.xml.xquery.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class XQueryTester {
public static void main(String[] args){
try {
execute();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (XQException e) {
e.printStackTrace();
}
}
private static void execute() throws FileNotFoundException, XQException{
InputStream inputStream = new FileInputStream(new File("books.xqy"));
XQDataSource ds = new SaxonXQDataSource();
XQConnection conn = ds.getConnection();
XQPreparedExpression exp = conn.prepareExpression(inputStream);
XQResultSequence result = exp.executeQuery();
while (result.next()) {
System.out.println(result.getItemAsString(null));
}
}
}
现在,此 XQuery 表达式将以与在输入文档中描述的方式相同的方式返回标题元素。
现在您可以将您自己的元素和属性添加到结果中。
XQuery 添加 HTML 元素和文本
如果要向结果中添加一些 HTML 元素,请像这样使用 XQuery:
books.xqy:
<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}. Category: {data($x/@category)}</li>
}
</ul>
</body>
</html>
输出结果为:
热门文章
优秀文章