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();
}
}
分享到:
相关推荐
2. **生成测试**:编写函数生成XML字符串或文件,使用Pull解析器写入数据。测试用例应验证生成的XML是否符合预设的格式和内容。 3. **异常测试**:确保在处理错误输入或异常情况时,程序能够适当地抛出异常或给出...
本项目"android pull解析 创建xmlw文件"是一个完整的工程示例,旨在帮助开发者理解和应用XML Pull解析来创建XML文件,尤其是XMLW格式的文件。下面我们将详细探讨XML Pull解析的工作原理以及如何在Android中实现。 1...
在Android开发中,由于其轻量级和低内存占用,Pull解析器常常被用来解析XML文档,尤其是在处理大数据量时,相比DOM和SAX解析器更为高效。 Pull解析器是一种事件驱动的解析方式,它不会一次性加载整个XML文档到内存...
相比于DOM解析和SAX解析,Pull解析器更加轻量级,因为它不需要将整个XML文档加载到内存中,而是通过事件驱动的方式逐行读取和解析XML,从而节省内存资源。在Android中,`XmlPullParser`是官方提供的Pull解析器实现。...
本文将深入探讨“Pull解析”这一技术,它是处理XML文档的一种高效方式,特别适合内存有限的设备。我们将讲解如何使用Pull解析器读取本地XML文件,并生成一个新的、格式不同的XML文件。 Pull解析是一种事件驱动的...
本篇将深入探讨Android下Pull解析器的使用,以及如何利用它来解析和生成XML文件。 一、Android Pull解析器简介 Pull解析器是基于事件驱动的解析模型,它不保留整个XML文档的内存映像,而是按需读取和处理XML元素。...
总结起来,Android中的XML生成和PULL解析是两个重要的技能。生成XML文件可以方便地存储和传输数据,而PULL解析器则提供了一种高效、低内存消耗的方式来解析XML数据。理解并熟练掌握这些技术对于Android开发者来说至...
1. 使用SAX或PULL解析XML,当遇到需要处理的元素时,将相关信息保存到内存或写入新的XML文件。 2. 在解析过程中,根据处理的事件生成相应的XML元素。如果是开始元素,就创建一个新的元素;如果是结束元素,就关闭...
总结,SAX、DOM和PULL解析器各有优缺点,选择哪种取决于具体需求。SAX适合处理大型文件,DOM适合需要随机访问的场景,而PULL则为移动开发提供轻量级的解决方案。了解和掌握这些解析方式,对于进行XML处理和开发相关...
在Android开发中,处理XML数据是一项常见的任务,而Android提供了内置的Pull解析器来高效地读取和生成XML文件。本文将详细介绍如何使用Pull解析器来操作XML。 首先,我们来理解什么是Pull解析器。Pull解析器是一种...
Pull解析采用事件驱动模型,通过读取XML文档的每一个元素事件来解析数据,相比DOM(Document Object Model)和SAX(Simple API for XML)两种传统的解析方式,具有更小的内存消耗和更快的解析速度。 #### Pull解析...
本篇将详细探讨Android中的XML解析,特别是PULL解析方式,并讲解如何进行XML的写入操作。 ### 1. Android XML解析概述 XML解析器分为两种主要类型:DOM(Document Object Model)和PULL(Pull Parser)。DOM解析器...
PullXML解析器是Android系统提供的一种轻量级的XML解析方法,它适用于处理大量的XML数据,特别是当内存有限或需要高效处理流式数据时。本文将深入探讨如何使用PullXML解析本地XML数据,并将解析后的数据存回本地。 ...
本案例将深入探讨如何使用Pull解析器读取和生成XML内容。 首先,理解XMLPullParser的工作原理至关重要。它通过移动到文档的不同事件(如START_TAG、END_TAG、TEXT等)来解析XML,这样开发者可以逐个处理元素,而不...
本文将详细探讨"PullXML"和"Json读写解析",并结合提供的压缩包文件名,主要关注Android平台上的实现。 XML(eXtensible Markup Language)是一种标记语言,用于描述数据结构和内容。它具有严格的语法规则,允许...
总结来说,理解并掌握XML的DOM、SAX和PULL解析方式是每个IT专业人士必备的技能。它们在数据处理、Web服务、应用程序间通信等众多领域都发挥着重要作用。熟练运用这些解析技术,能有效提升开发效率,优化程序性能,...
在Android开发中,XML(eXtensible Markup ...不论是选择DOM、SAX还是Pull解析,或是利用Volley、Retrofit等库处理网络中的XML,都需要根据具体需求和性能考虑。在实践中不断优化,才能更好地驾驭XML这一数据交换格式。
与SAX相比,PULL解析器更易于使用,因为开发者可以控制何时开始和结束解析,使得代码更简洁。 4. StAX(Streaming API for XML)解析: StAX是一种流式API,介于DOM和SAX之间,提供了一种向下的迭代方式来处理XML。...
2. **PULL解析器**:PULL解析器类似于SAX,也是事件驱动的,但它提供了一个更简单的API,允许开发者通过调用下一个事件来控制解析过程。Android SDK中内置的`XmlPullParser`就是PULL解析器的一个例子。 3. **DOM...