gpt4 book ai didi

java - 使用 XQuery 获取 XML 文件的文件名

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:27 24 4
gpt4 key购买 nike

我将实体存储在 eXist XML 数据库中,并使用文件名(资源 ID)作为实体的 ID。

示例:

String xquery = "for $movie in collection('/db/movie')//movie "
+ "return $movie";

执行此查询后,我检索 org.xmldb.api.base.Resource 实例,其内容用于创建实体。当我想设置这个实体的 id 时,我会这样做:

dvd.setId(rs.getId());

问题是如果我这样执行查询:

String xquery = "for $dvd in collection('/db/dvd')//dvd "
+ "return <dvd>"
+ "{$dvd/title}"
+ "{$dvd/type}"
+ "{"
+ "<content>"
+ " {"
+ " for $movie in $dvd/content//movie"
+ " let $movieIn := doc(concat(\"/db/movie/\", $movie/@id))/movie"
+ " return "
+ " <movie id=\"{$movie/@id}\">"
+ " {$movieIn/name}"
+ " {$movieIn/director}"
+ " {$movieIn/year}"
+ " {$movieIn/country}"
+ " {$movieIn/actors}"
+ " {$movieIn/genres}"
+ " </movie>"
+ " }"
+ "</content>"
+ "}"
+ "</dvd>";

rs.getId() 返回 null。我还尝试了来自 this class 的方法 getDocumentId() ,但它也返回 null。有没有办法让它返回资源的 ID(这是存储实体的文件的名称)?

如果不可能,是否有一种方法(函数或其他方法)通过 XQuery 查询获取我正在使用的文件的文件名(我的意思是,数据库从中检索数据)?

我尝试替换这一行:

+ "return <dvd>"

用这个:

+ "return <dvd id=\"{$dvd}\">"

(以便我可以从属性中获取文件名)但它不返回文件名。

最佳答案

由于您使用的是 eXist-db,因此您可以使用 util:document-name()功能:

util:document-name($dvd)

关于java - 使用 XQuery 获取 XML 文件的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com