2012-04-30 33 views
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> 

這是Java類處理InstalledProduct rootElement的

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; 
} 
} 

,這是類處理部分號碼標籤,這哪裏是問題。

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。有任何想法嗎?

回答

0

好的,我剛解決它。至少這對我有效。 檢查在InstalledProductDTO類中,setNum和partNumber xml標記的獲取與文字xml標記不匹配。標籤是「partNumber」,但get和set被稱爲getPartNumberURN和setPartNumberURN。所以我只是將它們更改爲getPartNumber和setPartNumber,並且工作正常。 如果這對你有用,請讓我知道確認這一點。如果我錯了,請糾正我。 謝謝,並希望這有助於!