XPath依据MIME_TYPE节点值获取MIME_SOURCE无输出,求解决
解决XPath过滤XML获取MIME_SOURCE的问题
你的XPath写法逻辑有误,导致匹配不到结果。问题出在条件判断的层级上:
- 原表达式
MIME_INFO/MIME/MIME_SOURCE[./MIME_TYPE='image/jpeg']里,./MIME_TYPE是在MIME_SOURCE节点内部查找子节点,但实际上MIME_TYPE是MIME的子节点,和MIME_SOURCE是平级关系,所以这个条件永远无法匹配。
正确的XPath写法
直接先过滤出符合MIME_TYPE条件的MIME节点,再提取对应的MIME_SOURCE:
/MIME_INFO/MIME[MIME_TYPE='image/jpeg']/MIME_SOURCE
示例验证
假设你的XML结构如下:
<MIME_INFO> <MIME> <MIME_TYPE>image/jpeg</MIME_TYPE> <MIME_SOURCE>summer_photo.jpg</MIME_SOURCE> </MIME> <MIME> <MIME_TYPE>application/pdf</MIME_TYPE> <MIME_SOURCE>report.pdf</MIME_SOURCE> </MIME> </MIME_INFO>
使用上述XPath会准确返回<MIME_SOURCE>summer_photo.jpg</MIME_SOURCE>节点。
额外注意事项
- 大小写敏感:XML节点名称区分大小写,确保XPath里的节点名和XML中的完全一致(比如不要把
MIME_TYPE写成mime_type)。 - 命名空间处理:如果你的XML带有命名空间(比如
xmlns="http://example.com/mime"),需要在XPath中指定命名空间前缀,或者使用忽略命名空间的写法(比如//*[local-name()='MIME' and *[local-name()='MIME_TYPE']='image/jpeg']/*[local-name()='MIME_SOURCE'])。
内容的提问来源于stack exchange,提问作者aje89
相关产品推荐
相关产品推荐

