正确的Xpath -

时间:2014-11-13 08:31:27

标签: xpath

我有一个xml,如 -

<?xml version="1.0" encoding="UTF-8"?>
<oslc_cm:Collection xmlns:oslc_cm="http://open-services.net/xmlns/cm/1.0/" 
                    oslc_cm:totalCount="7" 
                    xmlns:dc="http://purl.org/dc/terms/" 
                    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                    xmlns:rtc_cm="http://jazz.net/xmlns/prod/jazz/rtc/cm/1.0/">
  <rtc_cm:Action rdf:resource="https://rtc.gsissc.myatos.net:9443/ccm/oslc/workflows/_ezLt4PJ7EeGRg6GNKwqw9g/actions/com.ibm.team.workitem.defectWorkflow/com.ibm.team.workitem.defectWorkflow.action.resolve">
    <dc:identifier>com.ibm.team.workitem.defectWorkflow.action.resolve</dc:identifier>
    <rtc_cm:resultState rdf:resource="https://rtc.gsissc.myatos.net:9443/ccm/oslc/workflows/_ezLt4PJ7EeGRg6GNKwqw9g/states/com.ibm.team.workitem.defectWorkflow/3"/>
    <dc:title>Resolve</dc:title>
    <rtc_cm:iconUrl>https://rtc.gsissc.myatos.net:9443/ccm/service/com.ibm.team.workitem.common.internal.model.IImageContentService/processattachment/_ezLt4PJ7EeGRg6GNKwqw9g/workflow/resolve.gif</rtc_cm:iconUrl>
  </rtc_cm:Action>

从中我必须获取rtc_cm:resultState rdf:resource

它的正确XPath是什么。我正在使用XPathExpression xPathExpressionDescription = xpath.compile("../rtc_cm:resultState/@rdf:resource");给我空指针。

请指导我。

2 个答案:

答案 0 :(得分:0)

 ../rtc_cm:resultState/@rdf:resource

假设上下文节点 - 您的XPath表达式相对的节点 - 是rtc_cm:resultState的兄弟。

基于文档根目录,绝对路径可能会更好。类似的东西:

/oslc_cm:Collection/rtc_cm:Action/rtc_cm:resultState/@rdf:resource

(当然,假设您传递的IXmlNamespaceResolver实现具有所有适用的命名空间)。

答案 1 :(得分:0)

绝对路径是:

/oslc_cm:Collection/rtc_cm:Action/rtc_cm:resultState/@rdf:resource

如果您知道只有一个resultState实例,或者您想要查询所有实例:

//rtc_cm:resultState/@rdf:resource

请确保您的命名空间管理器具有您在XPath表达式中使用的命名空间的定义。