我正在尝试使用以下内容获取创建日期(已创建字段)的值大于"2014-04-25T02:11:10-07:00"
的文档:
qb.rangeConstraint("created", Operator.GT, "2014-04-25T02:11:10-07:00")
但我得到了
[致命错误]:9:102:字符引用"&#17"是一个无效的XML字符。
我也试过这个:
qb.rangeConstraint("created", Operator.GT, "2014-02-25")
完整堆栈跟踪供您参考:
[Fatal Error] :9:102: Character reference "" is an invalid XML character.
Exception in thread "main"
com.marklogic.client.MarkLogicIOException: Could not construct search results: parser error
at com.marklogic.client.io.SearchHandle.receiveContent(SearchHandle.java:160)
at com.marklogic.client.io.SearchHandle.receiveContent(SearchHandle.java:75)
at com.marklogic.client.impl.QueryManagerImpl.search(QueryManagerImpl.java:177)
at com.marklogic.client.impl.QueryManagerImpl.search(QueryManagerImpl.java:140)
at com.marklogic.client.example.tutorial.SearchProperties.main(SearchProperties.java:52)
Caused by: org.xml.sax.SAXParseException: Character reference "" is an invalid XML character.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.marklogic.client.io.SearchHandle.receiveContent(SearchHandle.java:157)
... 4 more
我在数据库的最后修改字段中添加了元素范围索引。 所以请告诉我这个错误的可能原因。谢谢:))
答案 0 :(得分:1)
堆栈跟踪令人费解。解析搜索响应时会抛出错误,因为找到了非法字符。
如果您使用StringHandle将响应作为字符串获取并打印出来,那么输出可能会为您提供一些有关响应错误的线索。
您还可以打印出从查询构建器获取的结构化查询,以查看Java客户端发送给服务器的内容。
只是为了确认:您是否创建了与约束相对应的查询选项?如果没有,您应该首先创建查询选项,或者直接在元素上使用范围查询,如下所述:
希望有帮助,
Erik Hennum