![](/img/trans.png)
[英]How to get value of xml element by using xml tags in HierarchicalStreamReader converter
[英]How to get xml element using element value?
我需要使用元素值獲取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元素及其父元素。
如果您有一個架構並生成許多類並遍歷每個屬性以查找要搜索的值,則可以使用JAXB進行此操作。 或者您使用一些數據投影 (公開:我隸屬於該項目):
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
”到Java接口Projection
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.