JAXB Moxy getValueByXpath给出null

时间:2013-07-26 12:54:23

标签: xpath jaxb moxy

我想查看以下xml文件中是否存在具有指定名称的主题元素。

input.xml中

<data>
    <artifacts>
        <document id="efqw4eads">
            <name>composite</name>
        </document>
        <theme id="1">
            <name>Terrace</name>
        </theme>
        <theme id="2">
            <name>Garage</name>
        </theme>
        <theme id="3">
            <name>Reception</name>
        </theme>
        <theme id="4">
            <name>Grade II</name>
        </theme>
    </artifacts>
</data>

我有以下代码。从不执行return方法的true语句。 answer始终包含空值。

public boolean themeExists(String name, Data data){
    String expression = "artifacts/theme[name='"+name+"']/name/text()";
    String answer = jaxbContext.getValueByXPath(data, expression, null, String.class);
    if(answer == null || answer.equals("")){
        return false;
    }
    return true;
}

2 个答案:

答案 0 :(得分:1)

在第一个轴步骤中没有找到<artifacts/>个元素。您的XPath表达式应该类似于

String expression = "data/theme[name='"+name+"']/name/text()";

答案 1 :(得分:1)

EclipseLink JAXB (MOXy)目前不支持此用例。我打开了以下增强功能,您可以用它来跟踪我们的进度: