簡體   English   中英

如何使用元素值獲取xml元素?

[英]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>

它是這樣工作的:

  • xpath //*[name='REAR_LEFT']選擇每個具有名為“ name”的子項且內容為“ REAR_LEFT”的元素。
  • XBProjector將所選元素“ Projection ”到Java接口Projection
  • 投影界面可以通過定義的投影方法(例如,用於類型,名稱和說明=
  • 投影接口可以將自己打印為XML

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM