简单的XML框架:基于属性值的XPath匹配

时间:2013-04-17 15:23:49

标签: java xml xpath simple-framework

给出这样的XML:

...
<Sport SportId="1">
    <Name language="en">Soccer</Name>
    <Name language="fi">Jalkapallo</Name>       
     ...    
</Sport>
...

如何使用Simple XML Framework将两个值读入Java类的字段? (<Sport>元素已正确映射到相应的类。)

public class Sport {    
    ...
    String nameEn;
    String nameFi;
    ...
}

我尝试了类似的方法:

@Element(name = "Name")
@Path("Name[@language='en']")
String nameEn;

但解析失败了:

Exception in thread "main" org.simpleframework.xml.core.PathException: 
  Invalid index for path '[@language='en']' in field 'nameEn'

另外,省略@Element这样:

@Path("Name[@language='en']")
String nameEn;

...解析不会崩溃,但nameEn值保持为空。

我希望匹配基于语言属性(而不是排序),但我想知道这是否可能(可能是Simple Framework中的XPath支持有限?)。 / p>

1 个答案:

答案 0 :(得分:0)

您是否尝试过显式获取元素的文本?即Name[@language='en']/text()

您的Xpath正在选择元素,而不是元素的 text ,这可能会导致某些XML引擎被阻塞。