Как использовать значение элемента XML при установке пути в библиотеке Java SimpleXML?
У меня есть следующий XML:
<rdr>
<details>
<detail>
<name>version</name>
<value>15.0</value>
</detail>
<detail>
<name>resolution</name>
<value>1080X1920</value>
</detail>
</details>
</rdr>
и я делаю это в следующем Java-бине:
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;
}
}
Я использую простой XML версии 2.6.6 для достижения этой цели:http://simple.sourceforge.net/
Однако, то, что я хотел бы сделать, это использовать элементы name в XPath. Например, вместо использования Path «details / detail [1]» quot; Я хотел бы использовать & quot; details / detail [name = version]. Это не работает, и я получаю org.simpleframework.xml.core.PathException: возвращен неверный индекс для исключения пути. Я пробовал окружающую версию с & apos; но безрезультатно. Из того, что я понимаю в XPath, это правильный синтаксис:http://www.w3schools.com/xpath/xpath_syntax.asp Кто-нибудь может подтвердить, что это выглядит правильно?
Я изучил исходный код простой библиотеки xml, и он обрабатывает обработку XPath самостоятельно, без использования сторонней библиотеки. Я могу понять, почему он не работает, потому что он принимает только цифры и будет выбрасывать это исключение для любого символа, который не является цифрой.
У меня возникает соблазн исправить библиотеку, но я подозреваю, что я делаю что-то не так и что может быть другая аннотация, которую я должен использовать, или какой-то другой синтаксис.
Есть ли другая аннотация, которую я могу использовать для достижения того, что я пытаюсь сделать? Можно ли сделать то, что я пытаюсь сделать, используя Simple?