簡體   English   中英

如何通過腳輪生成的 object 在 XML 中按屬性值查找元素

[英]How to find an element by attribute value in XML via castor generated object

我無法通過 castor 生成的類在 XML 文件中按屬性值查找元素。

Castor 很好地將 XML 映射到實體類。 但是它不提供按名稱查找元素的方法(假設名稱是元素的屬性)。 API 只能通過元素列表中的索引找到一個元素。 目前,如果我想按名稱查找元素,我必須遍歷元素列表才能找到它。 因為它解組的每個 class 都有不同的字段,所以似乎很難編寫通用方法來按名稱查找元素。 有沒有更好的方法從元素列表中按名稱查找元素?

注意:我是EclipseLink JAXB (MOXy)負責人,也是 JAXB ( JSR-222 ) 專家組的成員。


不確定 Castor,但您可以使用EclipseLink JAXB (MOXy)輕松做到這一點。

顧客

請注意如何通過@XmlPath注釋在映射上指定條件[@name='address']

package blog.predicate;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement(name="node")
@XmlType(propOrder={"firstName", "lastName", "address", "phoneNumbers"})
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {

    @XmlPath("node[@name='first-name']/text()")
    private String firstName;

    @XmlPath("node[@name='last-name']/text()")
    private String lastName;

    @XmlPath("node[@name='address']")
    private Address address;

    @XmlPath("node[@name='phone-number']")
    private List<PhoneNumber> phoneNumbers;

}

XML

<?xml version="1.0" encoding="UTF-8"?>
<node>
   <node name="first-name">Jane</node>
   <node name="last-name">Doe</node>
   <node name="address">
      <node name="street">123 A Street</node>
   </node>
   <node name="phone-number" type="work">555-1111</node>
   <node name="phone-number" type="cell">555-2222</node>
</node>

了解更多信息

暫無
暫無

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

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