我正在使用以下xml文档结构:
<feed>
<entry>
<title>Title 1</title>
</entry>
<entry>
<title>Entry by Sony</title>
</entry>
</feed>
我正在迭代文档名称以“feed”开头的数据库中的所有文档,例如:feed_doc1,feed_doc2等。我正在搜索包含给定关键字并尝试返回文档名称的文档。我正在使用BaseX XML数据库,我正在使用以下xquery:
for $doc_name in db:list()
where fn:starts-with($doc_name, 'feed')
return
for $node in doc($doc_name)/feed/entry[.//text() contains text 'Sony']]
return $doc_name
简而言之,我的查询应返回包含关键字“Sony”的所有文档的文档名称。
我看到以下错误:
java.io.IOException:org.basex.query.item.FTxt无法强制转换为org.basex.query.item.QNm
我试图谷歌关于此错误,但找不到足够的帮助信息。有人可以帮忙吗?
谢谢, 索尼
答案 0 :(得分:0)
org.basex.query.item.FTxt =&gt;是一个文本节点片段和 org.basex.query.item.QNm =&gt;是合格的名称或QName() 您很可能必须将QName转换为字符串
然而
Ftxt(或全文)=&gt;将是这个表达.// text()包含文本'Sony'
双斜杠“允许步骤操作节点的任何后代”,这可能是不精确的,不需要Xquery 1.1函数我会这样做
doc($doc_name)/entry/title[contains(text(),'Sony')]