0

みんな!この安らかな Web サービス クライアントを開発していますが、ネストされた要素を取得しようとすると問題が発生します。これは私が受け取っている XML です。

<InstalledProducts>
 <InstalledProduct>
 <uri>
 <url>
 http://immix-test.natinst.com/ib-rest/1.0/installed-product/NIC:458513.xml
 </url>
 <urn>urn:installed-product:NIC:458513</urn>
 </uri>
 <instanceId>458513</instanceId>
 <site>NIC</site>
 <serialNumber>A49AD1</serialNumber>
 <productNumber>459513</productNumber>
 <ibStatus>Latest</ibStatus>
 <ibCreationDate>1998-10-14</ibCreationDate>
 <partNumber>
  <urn>urn:product-item:181830E-01</urn>
 </partNumber>
 <latestServiceContracts>
 <url>
 http://immix-test.natinst.com/ib-rest/1.0/installed-product/NIC:458513/latestServiceContracts.xml
 </url>
 </latestServiceContracts>
 <allServiceContracts>
  <url>
   http://immix-test.natinst.com/ib-rest/1.0/installed-product/NIC:458513/allServiceContracts.xml
  </url>
  </allServiceContracts>
 </InstalledProduct>
</InstalledProducts>

これは、InstalledProduct RootElement を処理する Java クラスです。

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.apache.log4j.Logger;

@XmlRootElement(name = "InstalledProduct")
public class InstalledProductDTO {
private ContractsURL latestServiceContracts;
private PartNumber partNumber;
public static Logger logger = Logger.getLogger(InstalledProductDTO.class);
private int instanceId;
private String status;

@XmlElement(name = "serviceStatus")
public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

@XmlElement(name = "instanceId")
public int getInstanceId() {
    return instanceId;
}

public void setInstanceId(int instanceId) {
    this.instanceId = instanceId;
}

@XmlElement(name = "partNumber") 
public PartNumber getpartNumberURN(){
    return partNumber;      
}

public void setProductNumber(PartNumber partNumber){
    this.partNumber = partNumber;
}

@XmlElement(name = "latestServiceContracts")
public ContractsURL getLatestServiceContractsURL(){
    return latestServiceContracts;
}

public void setAllServiceContractsURL(ContractsURL latestServiceContractsURL){
    this.latestServiceContracts = latestServiceContractsURL;
}
}

これは partNumber タグを処理するクラスであり、ここに問題があります。

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "partNumber")
public class PartNumber {

private String urn;

@XmlElement(name = "urn")
public String getURN()
{
    return urn;
}

public void setUrn(String urn){
    this.urn = urn;
}

}

partNumber を取得しようとすると、null が返されます。何か案は?

4

1 に答える 1

0

わかりました、私はそれを解決しました。少なくともこれは私にとってはうまくいきました。InstalledProductDTO クラスで、partNumber xml タグのセットと取得がリテラル xml タグと一致しないことを確認してください。タグは「partNumber」ですが、getとsetはgetPartNumberURNとsetPartNumberURNと呼びます。そのため、それらを getPartNumber と setPartNumber に変更したところ、うまくいきました。これがうまくいった場合は、これを確認するためにお知らせください。私が間違っている場合は、私を修正してください。ありがとう、そしてこれが役立つことを願っています!

于 2012-05-02T14:44:51.197 に答える