我應該檢查<LineItem>
是否包含<Tender>
XML節點(這<Tender>
可以在任何<LineItem>
的,在這裏,在這個XML其去年<LineItem>
)。如果<Tender>
存在,我應該再次從第一個循環開始,檢查<LineItem>
是否包含<Return>
。如何重複使用Java代碼
XML的格式如下:
<Transaction>
<LineItem>
<Return></Return>
</LineItem>
<LineItem>
<Return></Return>
</LineItem>
<LineItem>
<Return></Return>
</LineItem>
<LineItem>
<Return></Return>
</LineItem>
<LineItem>
<Tender></Tender>
</LineItem>
</Transaction>
如何通過XML遍歷和檢查<Tender>
,再如何從開始遍歷檢查<Return>
?
我已經實現的(我只提供了代碼段,因爲它是巨大的)
//Tender Type
Lineitems = retailChildren.item(j).getChildNodes();
for(int i2=0;i2<Lineitems.getLength();i2++)
{
if(Lineitems.item(i2).getNodeName().equalsIgnoreCase("Tender")){
System.out.println("Inside Tender");
//start
NodeList TenderId=Lineitems.item(i2).getChildNodes();
TenderId=Lineitems.item(i2).getChildNodes();
for(int i4=0;i4<TenderId.getLength();i4++){
if(TenderId.item(i4).getNodeName().equalsIgnoreCase("TenderID")){
System.out.println("Inside Tender ID");
String TenderID=TenderId.item(i4).getFirstChild().getNodeValue();
System.out
.println(TenderID);
NodeList SaleType=TenderId.item(i2).getChildNodes();
//SaleType=TenderId.item(i2).getChildNodes();
for(int i3=0;i3<SaleType.getLength();i3++){
if(SaleType.item(i3).getNodeName().equalsIgnoreCase("bby:SaleTenderType")){
System.out.println("Inside Sale Tender Type");
String eCommValue=SaleType.item(i3).getFirstChild().getNodeValue();
if(eCommValue.equalsIgnoreCase("Magento")){
System.out.println("Inside Magento");
Lineitems = retailChildren.item(j).getChildNodes();
for (int i1 = 0; i1 < Lineitems.getLength(); i1++) {
if(Lineitems.item(i1).getNodeName().equalsIgnoreCase("Return")){
//Do method
}
}
}
}
}
}
}
}
// If <Tender> is not present, it should come here
else
{
Lineitems = retailChildren.item(j).getChildNodes();
for (int i1 = 0; i1 < Lineitems.getLength(); i1++) {
if(Lineitems.item(i1).getNodeName().equalsIgnoreCase("Return")){
//do method
}
}
}//End for for tender type
}
@ JPMoresmau--代碼included.I正在使用DOM解析器 –
你只是想tender'和列表'列表返回? –
我想你會發現用xpath解決這個問題更容易。 –