我需要使用元素值获取xml元素,我必须使用jaxb获取带有xml元素的父元素?
示例XML:
<ifx>
<nam-ref>LID</nam-ref>
<val>01</val>
<then>
<int>
<name>WHEELSPEED</name>
<description></description>
</int>
<int>
<name>FRONT</name>
<description></description>
</int>
<manyInt>
<int>
<name>REAR_LEFT</name>
<description></description>
</int>
</manyInt>
<int>
<name>REAR_RIGHT</name>
</int>
</then>
我只知道名称值为“REAR_LEFT”。有了这个,我找到了xml元素及其父元素。
答案 0 :(得分:0)
如果你有一个模式并生成很多类并遍历每个属性来查找你搜索的值,你可以用JAXB做到这一点。 或者您使用了一点data projection(披露:我隶属于该项目):
import org.xmlbeam.XBProjector;
import org.xmlbeam.XBProjector.Flags;
import org.xmlbeam.annotation.XBRead;
public class Demo {
public interface Projection {
@XBRead("name()")
String getType();
@XBRead("./name")
String getName();
@XBRead("./description")
String getDescription();
}
public static void main(String[] args) {
String xpath="//*[name='REAR_LEFT']";
Projection projection = new XBProjector(Flags.TO_STRING_RENDERS_XML).io().url("res://data.xml").evalXPath(xpath).as(Projection.class);
System.out.println(projection.getType()+":"+projection.getName()+" "+projection.getDescription());
System.out.println("As XML:\n"+projection);
}
}
在纠正你的XML(添加根元素,关闭ifx元素)之后,这个程序打印出来:
int:REAR_LEFT
As XML:
<int>
<name>REAR_LEFT</name>
<description/>
</int>
这是它的工作原理:
//*[name='REAR_LEFT']
选择具有名为“name”的子项的每个元素,其内容为“REAR_LEFT”。Projection