Alfresco中Lucene PATH查询解析异常问题求助
解决Alfresco Lucene查询中数字开头节点的PATH解析异常
你的推测完全正确——问题确实出在数字开头的节点名称上,这是Alfresco底层XPath解析的一个常见限制。
问题原因
XML元素的命名规则明确要求:元素名称不能以数字开头。Alfresco的PATH查询语法底层依赖XPath解析,当你写cm:9787a75b-cbc9-4d42-b76c-df88461e62c6时,解析器会把9787误认为是数值而非节点名称的一部分,直接触发Failed to parse XPath... Unexpected '9787'的异常。而第一个查询中的cm:aea88103-517e-4aa0-a3be-de258d0e6465以字母开头,符合XML元素命名规范,所以能正常解析。
解决方案
你需要修改PATH中数字开头节点的写法,两种方式都可以解决问题:
方式1:用单引号包裹数字开头的节点名
在cm:后面用单引号把节点名括起来,明确告诉解析器这是一个完整的节点名称:
+PATH:"/app:company_home/st:sites/cm:swsdp/cm:'9787a75b-cbc9-4d42-b76c-df88461e62c6'/cm:dataLists//*" AND +TYPE:"fdm:formDatalist"
方式2:使用local-name()匹配节点名
通过XPath的local-name()函数精准匹配节点名称,绕过元素命名规范的限制:
+PATH:"/app:company_home/st:sites/cm:swsdp/*[local-name()='9787a75b-cbc9-4d42-b76c-df88461e62c6']/cm:dataLists//*" AND +TYPE:"fdm:formDatalist"
这两种写法都能让解析器正确识别数字开头的节点,避免解析异常。
内容的提问来源于stack exchange,提问作者Vikash Patel
相关产品推荐
相关产品推荐

