/**
* Method for parsing orders XML.
* @param is input stream for parsing.
* @return SortedMap of OrderBook's mapping key name.
* @throws FileNotFoundException if there is no such file.
* @throws XMLStreamException The base exception for unexpected processing errors. This Exception
* class is used to report well-formedness errors as well as unexpected
* processing conditions.
*/
public SortedMap<String, OrderBook> parse(InputStream is) throws FileNotFoundException, XMLStreamException {
SortedMap<String, OrderBook> orders = new TreeMap<>(String::compareTo);
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(is);
OrderBook orderBook;
String book;
reader.next();
while (reader.hasNext()) {
if (reader.next() == XMLStreamConstants.START_ELEMENT) {
if (reader.isStartElement()) {
book = reader.getAttributeValue(null, "book");
if ("AddOrder".equals(reader.getLocalName())) {
if (!orders.containsKey(book)) {
orderBook = new OrderBook(book);
orders.put(book, orderBook);
} else {
orderBook = orders.get(book);
}
orderBook.addOrder(OrderBook.OPERATION.valueOf(reader.getAttributeValue(null, "operation")),
Integer.parseInt(reader.getAttributeValue(null, "orderId")),
Integer.parseInt(reader.getAttributeValue(null, "volume")),
Float.parseFloat(reader.getAttributeValue(null, "price")));
} else {
orders.get(book).delOrder(Integer.parseInt(reader.getAttributeValue(null, "orderId")));
}
}
}
}
return orders;
}
StAXParser.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:pzubaha
作者:
评论列表
文章目录