eclipse moxy @XmlPath combining predicates

31 views Asked by At

I am trying to use moxy @XmlPath to parse values with combination of predicates, but it is not being parsed instead a null is assigned. I have tried both syntax for combining predicates.

 @XmlPath("Tag[@attr1='A'][@attr2='X']/text()")
    @XmlPath("Tag[@attr1='A' and @attr2='X']/text()")
    
    <Element>
    <Tag attr1="A" attr2="X">1</Tag>
    <Tag attr1="A" attr2="Y">2</Tag>
    <Tag attr1="B" attr2="X">3</Tag>
    <Tag attr1="C" attr2="Y">4</Tag>
    </Element>

    @XmlRootElement(name="Element") 
    ClassA{
    @XmlPath("Tag[@attr1='A'][@attr2='X']/text()")
    String ax;
    @XmlPath("Tag[@attr1='A'][@attr2='Y']/text()")
    String ay;
    @XmlPath("Tag[@attr1='B'][@attr2='X']/text()")
    String bx;
    @XmlPath("Tag[@attr1='B'][@attr2='Y']/text()")
    String by;
}
1

There are 1 answers

2
Prophet On

You are missing @ before the second attribute attr2.
Also looks like you are missing // at the beginning of the expressions.
These XPaths are returning the appropriate nodes texts:

"//Tag[@attr1='A'][@attr2='X']/text()"
"//Tag[@attr1='A'][@attr2='Y']/text()"
"//Tag[@attr1='B'][@attr2='X']/text()"
"//Tag[@attr1='C'][@attr2='Y']/text()"