xpath - xpath xml根据兄弟值取第一个值
问题描述
我有一个逻辑应用程序,用于在下面显示的 XML 中获取值。我需要获取包含“ID 更改”文本的第一个 ws:Transaction_Entry_Moment,并且 ws:Is_Rescind_Or_Rescinded 值必须为“false”
<ws:Transaction_Log_Data>
<ws:Transaction_Log_Entry>
<ws:Transaction_Log_Description>Change Contacts for: XYZ</ws:Transaction_Log_Description>
<ws:Transaction_Entry_Moment>2020-11-05T20:25:58.439-08:00</ws:Transaction_Entry_Moment>
<ws:Is_Rescind_Or_Rescinded>false</ws:Is_Rescind_Or_Rescinded>
</ws:Transaction_Log_Entry>
<ws:Transaction_Log_Entry>
<ws:Transaction_Log_Description>ID Change: XYZ</ws:Transaction_Log_Description>
<ws:Transaction_Entry_Moment>2020-11-05T20:25:58.439-08:00</ws:Transaction_Entry_Moment>
<ws:Is_Rescind_Or_Rescinded>false</ws:Is_Rescind_Or_Rescinded>
</ws:Transaction_Log_Entry>
<ws:Transaction_Log_Entry>
<ws:Transaction_Log_Description>ID Change: XYZ</ws:Transaction_Log_Description>
<ws:Transaction_Entry_Moment>2020-11-05T20:25:58.439-08:00</ws:Transaction_Entry_Moment>
<ws:Is_Rescind_Or_Rescinded>false</ws:Is_Rescind_Or_Rescinded>
</ws:Transaction_Log_Entry>
</ws:Transaction_Log_Data>
我在我的逻辑应用程序中使用了以下 xpath,它返回空
"DATE": "@xpath(xml(triggerBody()), 'string(/*[local-name()=\"Transaction_Log_Data\"]/*[local-name()=\"Transaction_Log_Entry\"]/*[local-name()=\"Is_Rescind_Or_Rescinded\" and .= \"false\" and contains(@*[local-name()=\"Transaction_Log_Description\"], \"ID Change\")][position() = 1]/../*[local-name()=\"Transaction_Entry_Moment\"])')"
如果我删除 xpath 中的包含,如下所示,它会获取我的第一个 ws:Is_Rescind_Or_Rescinded,它是“假”的
"DATE": "@xpath(xml(triggerBody()), 'string(/*[local-name()=\"Transaction_Log_Data\"]/*[local-name()=\"Transaction_Log_Entry\"]/*[local-name()=\"Is_Rescind_Or_Rescinded\" and .= \"false\"][position() = 1]/../*[local-name()=\"Transaction_Entry_Moment\"])')"
我正在使用的包含有问题吗?什么是实现这一目标的正确方法?
解决方案
@
用于指向属性而不是元素- 谓词应用于错误的元素
尝试这个
'string(/*[local-name()=\"Transaction_Log_Data\"]/
*[local-name()=\"Transaction_Log_Entry\" and contains(*[local-name()=\"Transaction_Log_Description\"], \"ID Change\")]/
*[local-name()=\"Is_Rescind_Or_Rescinded\" and .= \"false\" ][position() = 1]/../
*[local-name()=\"Transaction_Entry_Moment\"])'
推荐阅读
- lit-element - 有没有办法让 lit-html 模板中的标签动态化?
- c - 计算文件中的字母“s”和“S”
- python - 使用 tf.data.Dataset 将数据提供给具有多个输入的 Keras 模型
- api - Google Cloud Vision API“错误的图像数据”错误
- html - 使用 html 下载属性在 Vue.js 应用程序中下载静态 pdf
- python - 使用 ipywidgets FileUpload 小部件时,我可以定义文件上传操作吗
- c# - 使用 linq 查询为每一行获取重复的行
- python - 问题从套接字接收图像数据到 pygame
- mxnet - CUDA忽略错误,检查失败:e == cudaSuccess:CUDA:初始化错误
- numpy - Numpy数组 - 像素坐标