2012-04-30 41 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,并且工作正常。 如果这对你有用,请让我知道确认这一点。如果我错了,请纠正我。 谢谢,并希望这有助于!