Java中@XmlPath注解如何匹配不同父节点的同路径字段
解决方案:使用MOXy @XmlPath的通配符语法
EclipseLink MOXy的@XmlPath支持XPath子集语法,你可以通过**通配符***匹配任意父节点,从而用单个set方法映射多个路径一致但父节点名称不同的XML节点:
实现代码
import org.eclipse.persistence.oxm.annotations.XmlPath; // ... @XmlPath("reports/*/ReportName/text()") public void setReportName(String reportName) { this.reportName = reportName; }
语法说明
*是XPath通配符,代表匹配reports节点下的任意直接子节点(不管节点名称是FATHER1、FATHER2还是其他)。- 该表达式会自动匹配所有符合
reports/[任意节点]/ReportName/text()路径的XML元素,将它们的值统一映射到reportName字段。
进阶:精确匹配特定前缀的父节点
如果只需要匹配名称以FATHER开头的父节点(比如FATHER1、FATHER2、FATHER3),可以使用XPath的starts-with函数缩小范围:
@XmlPath("reports/*[starts-with(local-name(), 'FATHER')]/ReportName/text()") public void setReportName(String reportName) { this.reportName = reportName; }
内容的提问来源于stack exchange,提问作者Andrea Bevilacqua
相关产品推荐
相关产品推荐

