小编典典

在Java SimpleXML库中设置路径时,如何使用XML元素的值?

java

我有以下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做我想做的事情?


阅读 215

收藏
2020-11-26

共1个答案

小编典典

顺便说一句,我通过编写自己的库来解决此问题,该库可从此处获得:https : //github.com/aembleton/XML-
Marshaller

这非常简单和基本,但是当时解决了这个问题。

2020-11-26