android用sax解析xml,Android:采用SAX解析XML实例

接着之前的部分现在要编写代码解析如下的person.xml文件

liming

30

xiaohong

25

程序结构图如下

8b1a2bd162dbc16bbd0a147fdee269f6.png

person类用于保存信息

SAXPersonService负责解析

package wade.domain;

public class Person {

private Integer id;

private String name;

private Short age;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Short getAge() {

return age;

}

public void setAge(Short age) {

this.age = age;

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

}

public class SAXPersonService {

public List getPersons(InputStream inputStream) throws Throwable

{

SAXParserFactory factory = SAXParserFactory.newInstance();

SAXParser parser =factory.newSAXParser();

PersonParser personparse = new PersonParser();

//void parse(InputStream is, DefaultHandler dh)

//throws SAXException, IOException

parser.parse(inputStream, personparse);

inputStream.close();

return personparse.getPersons();

}

//内部类重写了回调函数

private class PersonParser extends DefaultHandler{

private List persons=null;

private Person person=null;

private String tag=null;//用于存储读到的元素节点

public List getPersons() {

return persons;

}

@Override

public void startDocument() throws SAXException {

persons= new ArrayList();//初始化persons

}

@Override

public void characters(char[] ch, int start, int length)

throws SAXException {

if(tag!=null){

String data = new String(ch,start,length);//获得文本节点的数据

if("name".equals(tag)){

person.setName(data);

}else if("age".equals(tag)){

person.equals(new Short(data));

}

}

}

@Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

//假设,则

//uri="s",

//localName="person",

//qName="s:person"

//attributes得到所有的属性名和属性值

if("person".equals(localName)){

person = new Person();

person.setId(new Integer(attributes.getValue(0)));

}

tag=localName;

}

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

if("person".equals(localName)){

persons.add(person);

person=null;

}

tag=null;

}

}

}

使用junit进行测试

public class SAXPersonServiceTest extends AndroidTestCase{

private static final String TAG = "SAXPersonServiceTest";

public void testGetPersons() throws Throwable{

SAXPersonService service = new SAXPersonService();

InputStream inStream = getClass().getClassLoader().getResourceAsStream("person.xml");

List persons=service.getPersons(inStream);

for(Person p:persons){

Log.i(TAG, p.toString());

}

}

}

结果

1c75c13aa0f2ff475619fa33554053c4.png

说明正确解析了xml文件。

android ViewPager滑动事件(OnPageChangeListener)讲解

首先ViewPager在处理滑动事件的时候要用到OnPageChangeListenerOnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChanged,onPageScrolled,onPageSelected)onP

Fragment调用父activity中的方法

假如父Activity的类名叫ParentActivity,有一个test()方法在Fragment中调用其实很简单,代码如下:ParentActivityparentActivity=(ParentActivity)getActivity();parentActivity.test()

Android开发之onClick事件的三种写法

packagea.a;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;publicclassAActivityextendsActivity{/**Calledwhentheacti

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java中使用SAX解析XML,你可以按照以下步骤进行操作: 1. 导入相关的类和包,如`javax.xml.parsers.SAXParser`和`javax.xml.parsers.SAXParserFactory`。 2. 创建`SAXParserFactory`的实例。 3. 通过调用`SAXParserFactory`的`newSAXParser()`方法创建一个解析器。 4. 获取需要解析XML文档,并创建一个`File`对象来表示该文档。 5. 创建一个自定义的`SAXHandler`类,该类继承自`DefaultHandler`类,并重写需要的回调方法来处理XML元素和数据。 6. 调用解析器的`parse()`方法,传入文件和自定义的`SAXHandler`对象作为参数,开始解析XML文档。 你可以参考以下示例代码: ```java import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; public class TestDemo { public static void main(String[] args) throws Exception { // 1.实例SAXParserFactory对象 SAXParserFactory factory = SAXParserFactory.newInstance(); // 2.创建解析SAXParser parser = factory.newSAXParser(); // 3.获取需要解析的文档,生成解析器,最后解析文档 File f = new File("books.xml"); SaxHandler dh = new SaxHandler(); parser.parse(f, dh); } } ``` 请注意,上述代码中的`SaxHandler`是一个自定义的类,你需要根据自己的需求来实现该类,以便在解析XML时处理相应的元素和数据。 XML文档如下所示: ```xml <?xml version="1.0" encoding="UTF-8"?> <books> <book id="001"> <title>Harry Potter</title> <author>J K. Rowling</author> </book> <book id="002"> <title>Learning XML</title> <author>Erik T. Ray</author> </book> </books> ``` 希望以上信息能够帮到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java中使用sax解析xml的解决方法](https://download.csdn.net/download/weixin_38747216/12815749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [在java中使用sax解析xml](https://blog.csdn.net/weixin_33884611/article/details/86303531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值