<Product>
<SupplyDetail>
<Price>
<PriceTypeCode>01</PriceTypeCode>
<DiscountCoded>
<DiscountCodeType>02</DiscountCodeType>
<DiscountCodeTypeName>LSI</DiscountCodeTypeName>
<DiscountCode>25</DiscountCode></DiscountCoded>
<PriceAmount>29.95</PriceAmount>
<CurrencyCode>INR</CurrencyCode>
</Price>
</SupplyDetail>
<SupplyDetail>
<Price>
<PriceTypeCode>08</PriceTypeCode>
<PriceAmount>14.32</PriceAmount>
<CurrencyCode>INR</CurrencyCode>
</Price>
</SupplyDetail>
</Product>
Я хочу вывод какКак читать один и тот же XML-тег с помощью Стакс парсер
Pricetypecode : 01
PriceAmount : 29.95
Currencycode : INR
Pricetypecode : 08
Price Amount : 14.32
Currencycode : INR
BulkFileXMLReader2.java
import com.main.Query.Query;
import com.main.Bean.PriceDetail;
import com.main.Bean.SpecificationBook;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.SQLException;
import java.text.Normalizer;
import java.util.ArrayList;
import java.util.List;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
public static void main(String[] args) throws ClassNotFoundException, XMLStreamException, FileNotFoundException, SQLException {
String fileName = "D:\\SOFTWARE\\txt20160401.xml";
List<SpecificationBook> bookspec = (List<SpecificationBook>) parseXML(fileName);
for(SpecificationBook bean : bookspec){
System.out.println("The Price type code 08="+bean.priceTypeCode);
System.out.println("The price amount 08 is:"+bean.priceAmount);
System.out.println("The Currency Code 08 is:"+bean.currencyCode);
System.out.println("The price typecodechar 01 is:"+bean.priceTypeCodeChar);
System.out.println("The price amount 01 is:"+bean.priceAmount2);
System.out.println("The Currency code 01 is:"+bean.currencyCode1);
}
}
private static List<SpecificationBook> parseXML(String fileName) throws ClassNotFoundException, XMLStreamException {
List<SpecificationBook> empList = new ArrayList<>();
SpecificationBook emp = null;
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING, true);
try {
XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new FileInputStream(fileName));
while(xmlEventReader.hasNext()){
XMLEvent xmlEvent = xmlEventReader.nextEvent();
if (xmlEvent.isStartElement()){
StartElement startElement = xmlEvent.asStartElement();
if(startElement.getName().getLocalPart().equals("Product")){
emp = new SpecificationBook();
}
else if(startElement.getName().getLocalPart().equals("PriceTypeCode")){
xmlEvent = xmlEventReader.nextEvent();
emp.setPriceTypeCode(xmlEvent.asCharacters().toString());
}
else
if(startElement.getName().getLocalPart().equals("PriceAmount")){
xmlEvent = xmlEventReader.nextEvent();
emp.setPriceAmount(xmlEvent.asCharacters().toString());
}
else if(startElement.getName().getLocalPart().equals("CurrencyCode")){
xmlEvent = xmlEventReader.nextEvent();
emp.setCurrencyCode(xmlEvent.asCharacters().toString());
}
}
if(xmlEvent.isEndElement()){
EndElement endElement = xmlEvent.asEndElement();
if(endElement.getName().getLocalPart().equals("Product")){
empList.add(emp);
}
}
}
} catch (FileNotFoundException | XMLStreamException e) {
e.printStackTrace();
}
return empList;
}
Мой Pojo класса. SpecificationBook.java
public class SpecificationBook {
@Getter @Setter public String recordReference;
@Getter @Setter public String titleText;
@Getter @Setter public String imprintName;
@Getter @Setter public String publisherName;
@Getter @Setter public String illustrationDesc;
@Getter @Setter public String noofPages;
@Getter @Setter public String priceTypeCode;
@Getter @Setter public int book_id;
@Getter @Setter public String editionversionnumber;
@Getter @Setter public String recordreference1;
@Getter @Setter public String recordreference2;
@Getter @Setter public String recordreference3 ;
@Getter @Setter public String priceTypeCodeChar;
@Getter @Setter public String priceAmount;
@Getter @Setter public String priceAmount2;
@Getter @Setter public String currencyCode;
@Getter @Setter public String currencyCode1;
}
Я пытался получить значение из значений тегов деталь питания <price>
. Во время запуска этого кода. Я получил значения из второго значения тегов <SupplyDetail>
.
Хотя запустить этот код в моей машине я получил выход в
The Price type code 08=08
The price amount 08 is:14.83
The Currency Code 08 is:INR
The price typecodechar 01 is:null
The price amount 01 is:null
The Currency code 01 is:null
Вы не можете отвечать на сообщения? –