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 XML 解析 写入 PULL 方式
此示例介绍了xml的三种解析方式,包括SAX解析,dom解析,pull解析 并介绍了读取文件的方法,怎么写入xml文件等内容,希望对您有所帮助,谢谢。
在网络存储过程中有很多时候会遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比较多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡写入一个XML文件,然后再使用pull解析的方法对文件...
假如我们需要开发一个Android应用程序,需要同服务器端进行数据交互,通过XML文件可以很方便的在Android平台和服务器之间进行数据传输,具体实现涉及到对XML文件进行解析及写入的技术。本文实现在Android平台上基于...
简单演示xml的写入和读取,我这里解析xml用的pull技术,pull解析为官方推荐并且效率高,此demo附有注释,可供参考
实现了实时在线查询天气预报信息,首次访问把省、市信息写入xml,之后通过pull解析xml文件,提高访问效率。
解析XML文件的方法有很多方法:dom解析,就是document以及PULL和SAX方法。今天给大家分享一下如何用Document来操作XML。 效果图: 首先先对布局文件进行操作:activity_main.xml: <?xml version=1.0 encoding=...
Changelog CI是一个生成变更日志的GitHub Action,然后将变更日志添加到CHANGELOG.md文件中,并提交和/或注释到发布请求Pull。 它是如何工作的: Changelog CI使用python和GitHub API为存储库生成changelog。 首先...
quick-xml高性能xml拉式读取器/写入器。 读者:几乎为零拷贝(尽可能使用Cow)在内存分配上很容易(AP quick-xml高性能xml pull读写器。读者:几乎为零拷贝(尽可能使用Cow)是易于进行内存分配(API提供了一种重用...
ps:我用Docker打造了一个Hexo环境的图片: centos7+git+nodejs使用方法: docker pull zhang21/hexo:init 参考文档 ; ; ; ; ; 。 NexT美化及集成第三方服务,都可以参考此NexT官方文档,很重要! 关于 关于 ...
|--xml文件的pull解析与序列化写入 |--xml的封装序列化 |--任务循环之只在Activity显示时执行 |--修改文件的最后修改时间 |--偏好设置(回显) |--内存优化之各种方法 |--内容提供者之短信的序列化对象读写 |--内容...
这一点貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动...
开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了 43 家。 移动手机联盟创始成员: Aplix 、 Ascender 、 Audience 、 Broadcom 、中国移动、 eBay 、 Esmertec 、谷歌、...