Android 中 XmlPullParser 读写 XML 的方法

http://www.xmlpull.org/ XmlPullParser 是 Android 内置的 XML 解析器, 运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。

person.xml如下:

person.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
   <name>liming</name>
   <age>30</age>
</person>
<person id="20">
   <name>lili</name>
   <age>25</age>
</person>
</persons>


在Android中使用XmlPullParser读写的代码:

//读取public class PullService {
public static List<Person> readXML(InputStream inputStream) throws IOException{
    XmlPullParser parser = Xml.newPullParser();
    try {
    parser.setInput(inputStream, "UTF-8");
    int eventType = parser.getEventType();
   
    Person currentPerson = null;
    List<Person> persons = null;
    while (eventType != XmlPullParser.END_DOCUMENT) {
     switch (eventType) {
    case XmlPullParser.START_DOCUMENT://文档开始事件,可以进行数据初始化处理
      persons = new ArrayList<Person>();
      break;
    case XmlPullParser.START_TAG://开始元素事件
      String name = parser.getName();
      if (name.equalsIgnoreCase("person")) {
       currentPerson = new Person();
       currentPerson.setId(new Integer(parser.getAttributeValue(null, "id")));
      } else if (currentPerson != null) {
       if (name.equalsIgnoreCase("name")) {
        currentPerson.setName(parser.nextText());// 如果后面是Text节点,即返回它的值
       } else if (name.equalsIgnoreCase("age")) {
        currentPerson.setAge(new Short(parser.nextText()));
       }
      }
      break;
    case XmlPullParser.END_TAG://结束元素事件
      if (parser.getName().equalsIgnoreCase("person") && currentPerson != null) {
       persons.add(currentPerson);
       currentPerson = null;
      }
      break;
     }
     eventType = parser.next();
    }
    inputStream.close();
    return persons;
    } catch (Exception e) {
     e.printStackTrace();
    }
    return null;
   } 



//保存


public static String writeXML(List<Person> persons, Writer writer){
     XmlSerializer serializer = Xml.newSerializer();
     try {
         serializer.setOutput(writer);
         serializer.startDocument("UTF-8", true);
       //第一个参数为命名空间,如果不使用命名空间,可以设置为null
         serializer.startTag("", "persons");
         for (Person person : persons){
             serializer.startTag("", "person");
             serializer.attribute("", "id", person.getId().toString());
             serializer.startTag("", "name");
             serializer.text(person.getName());
             serializer.endTag("", "name");
             serializer.startTag("", "age");
             serializer.text(person.getAge().toString());
             serializer.endTag("", "age");
             serializer.endTag("", "person");
         }
         serializer.endTag("", "persons");
         serializer.endDocument();
         return writer.toString();
     } catch (Exception e) {
         e.printStackTrace();
     }
     return null;
  }
}

 

本文参考:http://www.linuxidc.com/Linux/2010-11/29768.htm

### 回答1: 《实用数字信号处理:从原理到应用》这本书是一本介绍数字信号处理原理和应用的实用教材。本书主要内容包括数字信号的基本概念、采样定理、离散时间信号与系统、频谱分析、数字滤波器设计与实现、快速傅里叶变换等内容。 首先,本书详细介绍了数字信号处理的基本概念,如连续时间信号与离散时间信号的转换原理,以及数字信号的采样定理和抽样定理。这些基本概念的理解对于数字信号处理的进一步学习和应用至关重要。 其次,本书还介绍了离散时间信号与系统的分析方法,包括离散时间线性时不变系统的特性以及系统的频域和时域响应。通过深入理解离散时间信号与系统的特点,读者可以更好地应用数字信号处理技术解决实际问题。 此外,本书还详细介绍了数字信号的频谱分析方法,包括离散时间傅里叶变换和快速傅里叶变换。频谱分析是数字信号处理中非常重要的一个环节,它可以帮助人们了解信号的频率特性,进而对信号进行进一步处理和分析。 最后,本书还介绍了数字滤波器的设计和实现方法,包括FIR滤波器和IIR滤波器的设计原理和应用。数字滤波器在信号处理中广泛应用,对于滤波、降噪等信号处理任务起到了至关重要的作用。 总而言之,《实用数字信号处理:从原理到应用》这本书通过系统而详细的介绍,把数字信号处理的基本原理和应用方法传达给读者。读者通过学习这本书,可以掌握数字信号处理的基本理论和应用技巧,并能够在实际工程中灵活应用数字信号处理技术。 ### 回答2: 《实用数字信号处理:从原理到应用 pdf》是一本介绍数字信号处理原理和应用的实用性指南。本书的主要目的是帮助读者理解和应用数字信号处理的基本原理和技术,以解决实际问题。 该书首先介绍了数字信号处理的基本概念和数学基础,如采样和量化等。然后详细介绍了数字滤波器、频谱分析、时频分析以及数字信号压缩等常见的数字信号处理技术。读者可以通过学习这些知识,了解如何对信号进行处理、分析和压缩,从而实现信号的优化和提高。 此外,该书还探讨了数字信号处理在通信、音频、图像和视频等领域的应用。对于读者来说,这是一个非常有用的指南,因为它涵盖了广泛的应用领域并提供了实用的技术指导。无论是从事相关行业的从业人员,还是学习数字信号处理的学生,都可以通过阅读本书来理解数字信号处理在实际应用中的具体应用场景和技术细节。 总结来说,《实用数字信号处理:从原理到应用 pdf》是一本全面介绍数字信号处理原理和应用的实用性指南。通过学习本书,读者可以深入了解数字信号处理的基本原理和技术,并将其应用到实际问题中,从而提高信号处理的效果和性能。无论是从事相关行业的从业人员,还是学习数字信号处理的学生,都可以受益于本书提供的全面指导和实用技术。 ### 回答3: 《实用数字信号处理:从原理到应用》是一本介绍数字信号处理的教材。本书以非数学推导的方式,通俗易懂地介绍了数字信号处理的原理与应用。下面针对本书的特点和内容进行简要回答。 首先,本书的一大特点是通俗易懂。作者没有过多地使用数学公式和推导,而是以图文结合的方式阐述概念和原理,使得读者容易理解。这样的写作风格适合初学者和非数学专业背景的读者。 其次,本书的内容丰富全面。从信号与系统基础知识入手,逐步介绍数字信号的采样与量化、离散时间信号的时域分析与频域分析、离散傅里叶变换等基本概念和方法。同时,还介绍了滤波器的设计与实现、变换域滤波、数字滤波器与滤波器结构优化等高级主题。此外,本书还涉及了语音信号处理、图像处理等领域的应用。 再次,本书注重实用性。每个章节都配有典型的应用案例和实例,帮助读者更好地理解所学知识在实际问题中的应用。此外,本书还介绍了多个数字信号处理软件工具,如MATLAB、LabVIEW等,为读者提供了实践操作的机会。 综上所述,《实用数字信号处理:从原理到应用》通过通俗易懂的方式,全面介绍了数字信号处理的原理与应用。它适合初学者和非数学专业背景的读者,既注重基础知识的讲解,又重视应用实例和软件工具的介绍,是一本值得阅读和学习的教材。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值