我有以下XML:
<rdr> <details> <detail> <name>version</name> <value>15.0</value> </detail> <detail> <name>resolution</name> <value>1080X1920</value> </detail> </details> </rdr>
我将其编组到以下Java bean中:
import org.simpleframework.xml.Element; import org.simpleframework.xml.Path; import org.simpleframework.xml.Root; @Root(name = "rdr", strict = false) public class XmlBean { @Path("details/detail[1]") @Element(name = "value") private String version; @Path("details/detail[2]") @Element(name = "value") private String resolution; public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getResolution() { return resolution; } public void setResolution(String resolution) { this.resolution = resolution; } }
我正在使用2.6.6版的简单XML实现此目的:http : //simple.sourceforge.net/
但是,我想做的是使用XPath中的name元素。例如,我不是使用路径“ details / detail [1]”,而是使用“ details / detail [name = version]”。这不起作用,并且我得到org.simpleframework.xml.core.PathException:返回的路径异常无效索引。我已尝试将周围的版本替换为’,但无济于事。根据我对XPath的了解,这是正确的语法:http : //www.w3schools.com/xpath/xpath_syntax.asp 有人可以确认这看起来正确吗?
我已经研究了简单的xml库的源代码,它在不使用第三方库的情况下自行处理XPath处理。我知道为什么它不起作用,因为它只接受数字,并且会为所有非数字字符抛出该异常。
我很想修复该库,但是怀疑我做错了什么,可能还有其他应使用的注释或其他语法。
是否可以使用另一个注释来实现我要执行的操作?是否可以使用Simple做我想做的事情?
顺便说一句,我通过编写自己的库来解决此问题,该库可从此处获得:https : //github.com/aembleton/XML- Marshaller
这非常简单和基本,但是当时解决了这个问题。