私は大まかに次のように見えるXMLを持っています:
<Dispatch ID = "JJJJ">
<Log ID = "150504BCFSP00072">
<LogTime>"May 4 2015 5:48PM"</LogTime>
<LogType>"1125-KKKK"</LogType>
<LogDetails>
<details>
<DetailTime>"May 4 2015 5:48PM"</DetailTime>
<IncidentDetail>"[1] The Thing I Want"</IncidentDetail>
<DetailTime>"May 4 2015 5:49PM"</DetailTime>
<IncidentDetail>"[2] The Thing I Don't Want"</IncidentDetail>
</details>
</LogDetails>
</Log>
</Dispatch>
ステーションIDがJJJJで、LogTypeに「KKKK」が含まれ、IncidentDetailが[1]で始まるログからすべてのIncidentDetailテキストを抽出したいと思います(潜在的に多くの更新の最初の更新になります)。これまでのところ、私はこのXPATHクエリを持っています:
//Dispatch[@ID='JJJJ']//Log/LogType[contains(.,'KKKK')]
これにより、次のようにインシデントのリストが表示されます。
Element='<LogType>"1125-KKKK"</LogType>'
Element='<LogType>"1125-KKKK"</LogType>'
Element='<LogType>"1125-KKKK"</LogType>'
しかし、それは私を窮地に追いやるだけです。ここでさかのぼって、探しているものと一致するこれらのLogTypeインシデントのそれぞれのIncidentDetailテキストを取得するにはどうすればよいですか?マルチステップのプロセスはありますか?
どんな援助もありがたいです。
Log/LogType
主軸にステップインする代わりに、次のように述語として配置できます。
//Dispatch[@ID='JJJJ'][Log/LogType[contains(.,'KKKK')]]
または別の方法:
//Dispatch[@ID='JJJJ' and Log/LogType[contains(.,'KKKK')]]
ここから、主軸を簡単に続行して、IncidentDetail
後戻りする必要はありません。
/Log/LogDetails/details/IncidentDetail
アップデートについて:
IncindentDetail
xpath indexを使用して、同じ親内の最初のフィルターのみを取得するフィルターを追加できます。
/Log/LogDetails/details/IncidentDetail[1]
またはノードのテキストコンテンツによるフィルタリング:
/Log/LogDetails/details/IncidentDetail[contains(.,'[1]')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加