私は次のXMLを持っています:
<rdr>
<details>
<detail>
<name>version</name>
<value>15.0</value>
</detail>
<detail>
<name>resolution</name>
<value>1080X1920</value>
</detail>
</details>
</rdr>
これを次のJavaBeanにマーシャリングしています。
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/
ただし、私がやりたいのは、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を使用して私がやろうとしていることを行うことは可能ですか?