pull解析和pull的写入
程序员文章站
2022-05-23 08:48:14
...
android常用的解析技术,javaee中使用起来也是非常方便的,轻便灵巧,下面我来为大家贴上代码演示pull的使用
首先是一个名为Product的javabean,后面的类是用来封装数据进javabean或者,将javabean数据写入到xml当中
public class Product { private String name; private double price; public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } }
xml的解析和写入
package cn.itcast.pull; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; public class PULLCURDTest { // 删除商品 @Test // 删除洗衣机 public void testDelete() throws Exception { // 步骤一 将XML数据加载内存 List集合 List<Product> products = parseXml2List("product.xml"); // 步骤二 从内存List删除洗衣机 for (Product product : products) { if (product.getName().equals("洗衣机")) { products.remove(product); break; // 只能删一个 } } // 步骤三 将List集合回写XML serializeList2Xml("product.xml", products); } // 测试修改商品 @Test // 将产品价格提升20% public void testUpdate() throws Exception { // 步骤一 将XML数据加载内存 List集合 List<Product> products = parseXml2List("product.xml"); // 步骤二 修改内存中List for (Product product : products) { double price = product.getPrice(); price = price * 1.2;// 上涨20% product.setPrice(price); } // 步骤三 将List集合回写XML serializeList2Xml("product.xml", products); } // 测试增加商品 @Test public void testAdd() throws Exception { // 步骤一 将XML数据加载内存 List集合 List<Product> products = parseXml2List("product.xml"); // 步骤二 添加商品 Product product = new Product(); product.setName("数码相机"); product.setPrice(5000); products.add(product); // 步骤三 将List集合回写XML serializeList2Xml("product.xml", products); } // 解析XML到List public static List<Product> parseXml2List(String filename) throws Exception { List<Product> products = new ArrayList<Product>(); // 解析xml 将xml数据 转换 Product对象,添加到集合 XmlPullParserFactory xmlPullParserFactory = XmlPullParserFactory .newInstance(); XmlPullParser parser = xmlPullParserFactory.newPullParser(); parser.setInput(new FileInputStream(filename), "utf-8"); int eventType; Product currentProduct = null; while ((eventType = parser.getEventType()) != XmlPullParser.END_DOCUMENT) { // 读取<product> 创建新的product if (eventType == XmlPullParser.START_TAG && parser.getName().equals("product")) { currentProduct = new Product(); } // 设置name属性 if (eventType == XmlPullParser.START_TAG && parser.getName().equals("name")) { currentProduct.setName(parser.nextText()); } // 设置price属性 if (eventType == XmlPullParser.START_TAG && parser.getName().equals("price")) { currentProduct.setPrice(Double.parseDouble(parser.nextText())); } // 读取</product> 将对象加入集合 if (eventType == XmlPullParser.END_TAG && parser.getName().equals("product")) { products.add(currentProduct); currentProduct = null; } parser.next(); } return products; } // 回写List到XML public static void serializeList2Xml(String filename, List<Product> products) throws Exception { // 创建序列化对象 XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance(); XmlSerializer serializer = parserFactory.newSerializer(); serializer.setOutput(new FileOutputStream(filename), "utf-8"); serializer.startDocument("utf-8", true); serializer.startTag(null, "products"); for (Product product : products) { serializer.startTag(null, "product"); serializer.startTag(null, "name"); // name的值在product对象中 serializer.text(product.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "price"); // price的值在product对象中 serializer.text(product.getPrice() + ""); serializer.endTag(null, "price"); serializer.endTag(null, "product"); } serializer.endTag(null, "products"); serializer.endDocument(); } }
上一篇: android pull解析相关理解
下一篇: Android Pull解析xml